Problème de GetDlgItem dans un thread

Résolu
Signaler
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020
-
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020
-
Bonjour à tous !

Je développe actuellement une petite appli MFC avec visual studio 6.
J'ai créer un thread qui fonctionne très bien.
Dans ce thread, j'aimerais pouvoir récupérer une valeur saisie dans un editBox ( le programme est en fait, un serveur, et en l'occurence, ma valeure à récupérer est le numéro de port).

Je fais donc appel a GetDlgItem afin de récupérer ma valeur, et la, ca ne fonctionne pas, j'ai une erreure à la compilation me disant :

CWnd::GetDlgItem' : illegal call of non-static member function

Je vous montre le petit code de mon thread :

UINT CTEST_SERVEURSDlg::ThreadServeur(LPVOID pParam) // Implémentation de mon thread
{
    CString m_strPort;
    int m_nPort;
 
    CEdit * pEdit = (CEdit *)GetDlgItem(IDC_EDIT_PORT);
    pEdit->GetWindowText(m_strPort);
    m_nPort=atoi(m_strPort); // conversion du numéro de port (CString) en entier ( int)
    serveur *MonServeur= new serveur(m_nPort); // Appel au constructeur, création du socket
   return 0;


}

Merci  à tous pour votre attention !

Bonne soirée

13 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Passe la valeur dans pParam, semble inutilisé.

ciao...
BruNews, MVP VC++
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
HWND hEdit;
hEdit = GetDlgItem(IDC_EDIT_PORT);

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
2 solutions:
- utiliser les sections critiques
- utiliser la synchronisation

Cf MSDN

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Oups dsl j'ai mal lu ton probleme.
Cette solution est néamoins plus propre et plus sure pour tout ce qui est gestion des composants graphique dans les threads.

Shell
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

:\

Et simplement ya pas un autre moyen?
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Oui, mais j'aurais souhaité que mon GetDlgItem afin de récupérer la valeur de ma éditbox soit fais dans ce thread, comme ce thread est déclenché lors d'un appuis bouton.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Alors passe le hwnd du edit.

ciao...
BruNews, MVP VC++
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Ok, donc tu me conseilles de passer le handle du edit en argument pour pParam
Et mon GetDlgItem, que deviens -il?

Je m'excuse de ma question de noob, mais je suis pas très alaise avec tout ca !!

merci
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
char buf[12];
::GetWindowText(hedit, buf, 12);
et atoi() pour finir.

ciao...
BruNews, MVP VC++
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Merci brunews pour le complément ^^

Shell
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Merci vraiment à tous !!

Je fini ma coupe de champ', et j'essay :)
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Je ne vois pas, en fait, je pense que je déclare mon Hwnd au mauvaise endroit, mais je ne vois pas ou placer le code que vous m'avez donnés, vous pourriez me l'indiquer s'il vous plais?

Je suis conscient que je devient lourd sur ce post, mais la je floppe :(

Merci à tous
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Merci  a tous, je viens de trouver, j'ai donc utilisé pParam, merci a tous :)