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

Vue hybride

dreamkiller [MFC]Recuperation de variable... 02/04/2005, 17h03
farscape salut, si tu veux recuperer... 02/04/2005, 17h12
dreamkiller ai mais mon probleme... 02/04/2005, 17h15
farscape il faut passer en argument... 02/04/2005, 17h25
dreamkiller ok j'ai trop du mal... 02/04/2005, 17h30
dreamkiller pour les variable c'est bon... 02/04/2005, 17h53
farscape salut, il suffit de faire un... 03/04/2005, 12h01
dreamkiller ouai mais pParam ne pointe... 03/04/2005, 12h11
farscape et bien il faut que tu te... 03/04/2005, 12h13
dreamkiller c'est fait mais maintenant... 03/04/2005, 16h59
farscape a la place de invalidate... 03/04/2005, 17h03
dreamkiller En fait je v oulais eviter... 03/04/2005, 17h05
farscape alors envoi un message privé... 03/04/2005, 17h07
dreamkiller :evil:memoire ne peut etre... 03/04/2005, 17h29
farscape salut , oui ça c'est mieux:... 03/04/2005, 17h37
dreamkiller mmmmmmmmmmmm C'est quoi... 03/04/2005, 17h39
farscape je me suis trompé sur les... 03/04/2005, 17h42
dreamkiller tj meme prob memoire ne peut... 03/04/2005, 17h45
farscape quelle est la valeur du... 03/04/2005, 17h52
dreamkiller 0xcdcdcdcd mias c'est sur... 03/04/2005, 17h56
farscape hum , la lecture de ce post... 03/04/2005, 17h59
dreamkiller ce qui veux dire :?: 03/04/2005, 18h19
dreamkiller voila ce que j'ai ecrit ... 03/04/2005, 18h22
farscape vu la valeur de ton pointeur... 03/04/2005, 20h33
dreamkiller Ben elle gere une horloge ... 03/04/2005, 20h57
dreamkiller voila le code de ma fenetre ... 03/04/2005, 21h11
dreamkiller help... 05/04/2005, 15h26
Message précédent Message précédent   Message suivant Message suivant
  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