Salut,

J'ai un programme multifenetres avec l'api win32, et dans l'une d'elles je cree un thread lors d'un clic sur un bouton (fonction callback) avec le code suivant :

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
void GestBoutonsFHebergerPartie(HWND fenetre,UINT message, WPARAM wParam, LPARAM lParam)
{
    static InfosPartie MaPartie; // On met les variables du thread en memoire car on va sortir de cette fonction et donc les perdre
    static HANDLE hdlThreadServeur; // Le thread va donc recevoir n'importe quoi puisque c'était un pointeur!
    static DWORD CodeRetourThread;
 
    switch(LOWORD(wParam)) // Quand btn enfoncé, une partie de wParam vaut Id du bouton => recup avec LOWORD()
    {
    case ID_LANCER_SERVEUR:
 
               strcpy(MaPartie.NomPartie, NomPartie); // On remplie la structure qu'on enverra sur le reseau en reponse aux broadcasts
               strcpy(MaPartie.IPServeur, IPChoisie);
 
               hdlThreadServeur = CreateThread(NULL, 0, HebergementPartie, &MaPartie, 0, NULL); // On lance le thread pour une ecoute UDP en attente de demande d'infos, ou de connexion
               // faire une animation d'attente
 
               GetExitCodeThread(hdlThreadServeur, &CodeRetourThread); // Puis on recupere le code de retour du thread
 
               if(CodeRetourThread == -1) // ne fonctionne pas
               {
                                   MessageBox(NULL,"Erreur dans le thread","Erreur !",MB_OK | MB_ICONWARNING);
 
               }
         }
        break;
 
    }
}
Seulement, mon thread met quelques temps à s'executer, et le programme pendant ce temps suit son cours et sort de ma fonction callback de traitement des boutons.

Donc, je ne sais pas où placer mon appel GetExitCodeThread(hdlThreadServeur, &CodeRetourThread); pour savoir si le thread s'est bien terminé ou si on en est sorti de facon prématurée.

Pouvez vous m'aider ?