[api Win32] Recuperer code de sortie d'un thread
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:
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 ?