IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC]Recuperation de variable situ� dans un thread


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut [MFC]Recuperation de variable situ� dans un thread
    Bonjour

    Voila j'ai besoin de recupere 3 variable situ� a l'interireure d'un thread et je ne sais pas trop comment m'y prendre

    voila mon code les variable a recuperer son strHeure strMin et strSec

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    CHologe::CHologe()
    {
    	m_pTHreadHorloge=AfxBeginThread(ThreadHorloge,this,THREAD_PRIORITY_LOWEST);	
    	m_pTHreadHorloge->m_bAutoDelete=false;
    	m_bFin=false;
    }
     
    CHologe::~CHologe()
    {
    	m_bFin=true;
    }
     
     
    UINT ThreadHorloge(LPVOID pParam)
    {
     
    	CHologe* pObject = (CHologe*)pParam;
    	bool bTopSeconde=false;
    	CTime horloge /*= CTime::GetCurrentTime()*/;
     
    	int nHeure;
    	int nMin;
    	int nSec;
     
    	CString strHeure;
    	CString strMin;
    	CString strSec;
     
    	while(pObject->m_bFin!=true)
    	{
    		horloge = CTime::GetCurrentTime();
    		nHeure=horloge.GetHour();
    		nMin=horloge.GetMinute();
    		nSec=horloge.GetSecond();
     
    		/*CStatic * heure=(CStatic *)pObject->GetDlgItem(IDC_TEXT_HEURE);
    		CStatic * min=(CStatic *)pObject->GetDlgItem(IDC_TEXT_MIN);
    		CStatic * sec=(CStatic *)pObject->GetDlgItem(IDC_TEXT_SEC);*/
     
    		strHeure.Format("%d",nHeure);
    		strMin.Format("%d",nMin);
    		strSec.Format("%d",nSec);
     
    		/*heure->SetWindowText(strHeure);
    		min->SetWindowText(strMin);
    		sec->SetWindowText(strSec);
    		pObject->Invalidate();*/
     
    		Sleep(1000);
    	}
    	return 1;
    }
    merci de votre aide

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    si tu veux recuperer les valeurs dans une classe fenetre ,tu peux stocker ces elements dans des donnees membres de la classe qui lance le thread .
    et envoyer un message priv� pour signifier l'affectation.
    exemple de message priv� :
    http://c.developpez.com/faq/vc/?page...CDialogRunTask
    exemple d'utilisation de worker thread:
    http://c.developpez.com/faq/vc/?page...WithSerialPort

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    ai mais mon probleme justement c'est comment enregistrer ces variables dans la classe

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    il faut passer en argument l'adresse de la classe (this) en parametre de lancement du thread extrait de la faq post concernant la voie serie :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if (!(m_pThread = AfxBeginThread(Thread, this))

  5. #5
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    ok j'ai trop du mal aujourd'hui je croit que j'ai resolu le prob

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    pour les variable c'est bon mais maintenant je cherche le moyen de faire un Invalidate dans le thread
    Une idee?????


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    CHologe::CHologe()
    {
     
    	m_pTHreadHorloge=AfxBeginThread(ThreadHorloge,this,THREAD_PRIORITY_LOWEST);	
    	m_pTHreadHorloge->m_bAutoDelete=false;
    	m_bFin=false;
    }
     
    CHologe::~CHologe()
    {
    	m_bFin=true;
    }
     
     
    UINT ThreadHorloge(LPVOID pParam)
    {
     
    	CHologe* pObject = (CHologe*)pParam;
    	bool bTopSeconde=false;
    	CTime horloge /*= CTime::GetCurrentTime()*/;
     
    	int nHeure;
    	int nMin;
    	int nSec;
     
     
    	while(pObject->m_bFin!=true)
    	{
    		horloge = CTime::GetCurrentTime();
    		nHeure=horloge.GetHour();
    		nMin=horloge.GetMinute();
    		nSec=horloge.GetSecond();
     
    		pObject->m_strHeure.Format("%d",nHeure);
    		pObject->m_strMin.Format("%d",nMin);
    		pObject->m_strSec.Format("%d",nSec);
     
    		Sleep(1000);
     
    	}
    	return 1;
    }

  7. #7
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    il suffit de faire un Invalidate sur la fenetre concern�e .
    attention tout de m�me � �a :
    http://c.developpez.com/faq/vc/?page...d#WorkerThread
    dans ton cas le invalidate devrait fonctionner .

  8. #8
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    ouai mais pParam ne pointe pas dans mon cas sur une fenetre mais une classe horloge

  9. #9
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    et bien il faut que tu te debroulles pour avoir un pointeur sur cette fenetre stocker dans cette classe pour que le thread puisse y acceder ...

  10. #10
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    c'est fait mais maintenant mon prog ne se lance pas (il apparait en processus mais pas en application)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    UINT ThreadHorloge(LPVOID pParam)
    {
     
    	CHologe* pObject = (CHologe*)pParam;
    	bool bTopSeconde=false;
    	CTime horloge /*= CTime::GetCurrentTime()*/;
     
    	int nHeure;
    	int nMin;
    	int nSec;
     
     
    	while(pObject->m_bFin!=true)
    	{
    		horloge = CTime::GetCurrentTime();
    		nHeure=horloge.GetHour();
    		nMin=horloge.GetMinute();
    		nSec=horloge.GetSecond();
     
    		pObject->m_strHeure.Format("%d",nHeure);
    		pObject->m_strMin.Format("%d",nMin);
    		pObject->m_strSec.Format("%d",nSec);
     
    		//CPCControleDlg fen1;
    		//fen1.PostMessage(WM_USER+1); 
    		pObject->m_pDialog->Invalidate();
    		Sleep(1000);
     
    	}
    	return 1;
    }

  11. #11
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    a la place de invalidate attaque directe les controles responsables de l'heure par un SetWindowText.

  12. #12
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    En fait je v oulais eviter cette solution pour bien separer l'ihm du reste du code

  13. #13
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    alors envoi un message priv� qui fait le boulot d'affichage (solution deja evoqu�e plus haut dans le fil du post) .
    comme �a l'application n'a pas de probleme pour s'afficher ..

  14. #14
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    memoire ne peut etre written

    une id�e ???

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     ::PostMessage((HWND)pParam,WM_USER+1,0,0);

  15. #15
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut ,
    oui �a c'est mieux:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ::PostMessage(pObject->m_pDialog->m_Hwnd,WM_USER+1,0,0);

  16. #16
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    mmmmmmmmmmmm
    C'est quoi m_Hwnd ???

  17. #17
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    je me suis tromp� sur les majuscules/minuscules:
    CWnd::m_hWnd

  18. #18
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    tj meme prob memoire ne peut etre written et apres memoire ne peut etre read et obliger de redemarer le pc car j'ai beau fire ok il reste la le message

  19. #19
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    quelle est la valeur du pointeur : pObject->m_pDialog ?
    (en debug bien sur)

  20. #20
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    30
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Par d�faut
    0xcdcdcdcd

    mias c'est sur cette ligne que ca plante

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ::PostMessage(pObject->m_pDialog->m_hWnd,WM_USER+1,0,0);
    j'vais verifier l'initialisation de mon pointer

Discussions similaires

  1. R�ponses: 4
    Dernier message: 29/12/2006, 19h20
  2. [PHP-JS] recuperer une variable javascript dan php
    Par hammag dans le forum Langage
    R�ponses: 2
    Dernier message: 07/08/2006, 14h00
  3. PB recuperation dune donn�e situ� dans un bean
    Par Kpone dans le forum Servlets/JSP
    R�ponses: 1
    Dernier message: 04/04/2006, 05h46
  4. [Tableaux] recuperer un contenu situ� dans un tableau
    Par jeanfrancois dans le forum Langage
    R�ponses: 7
    Dernier message: 06/03/2006, 15h12
  5. R�ponses: 1
    Dernier message: 22/12/2005, 08h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo