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 54 55 56 57 58 59 60 61 62 63 64
| LRESULT CALLBACK procedureFenetreAnimHebergement(HWND fenetreAnimHebergement, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND handleProgressBar; // handle de la progressbar
DWORD CodeRetourThread; // Code de retour de fin de thread du serveur
if(!handleProgressBar) handleProgressBar = GetDlgItem(fenetreAnimHebergement, ID_PROGRESSBAR_HEBERG);
switch (message)
{
case WM_CREATE:
RemplirFenetreAnimHebergement(fenetreAnimHebergement);
SendMessage(handleProgressBar, PBM_SETRANGE, 0, MAKELONG(0,22)); // On met une progressbar de rang 22
SendMessage(handleProgressBar, PBM_SETSTEP, 1, 0); // Configuration du pas à 1
return 0;
case WM_COMMAND: // Quand un bouton est enfoncé message = WM_COMMAND
if(LOWORD(wParam) == ID_STOPPER_ECOUTE) // Quand btn enfoncé, une partie de wParam vaut Id du bouton => recup avec LOWORD()
{
KillTimer(fenetreAnimHebergement, ID_TIMER_HEBERG_PARTIE); // On kill le timer
TerminateThread(hdlThreadServeur,-1);
/// SOCKET A KILLER !!!!
}
return 0;
case WM_TIMER:
switch (wParam)
{
case ID_TIMER_HEBERG_PARTIE: // Toutes les 5 secondes on teste si le thread est terminé
GetExitCodeThread(hdlThreadServeur, &CodeRetourThread); // On récupère le code de retour du thread
SendMessage(handleProgressBar, PBM_STEPIT, 0, 0); // On envoie un carré dans la progressbar
if(CodeRetourThread == -1)
{
KillTimer(fenetreAnimHebergement, ID_TIMER_HEBERG_PARTIE); // On kill le timer
ShowWindow(fenetreAnimHebergement, SW_HIDE); // On enleve l'attente d'animation
ShowWindow(fenetreHebergerPartie, SW_SHOW); // On remet la fenetre de reglage de la partie
}
else if(CodeRetourThread == 0)
{
KillTimer(fenetreAnimHebergement, ID_TIMER_HEBERG_PARTIE); // On kill le timer
MessageBox(fenetreAnimHebergement,"Infos du client recues, socket fermé\n-> Démarrage de la partie","Tout semble OK...",MB_OK | MB_ICONASTERISK);
// On ferme toutes les fenetres et on demarre la partie
ShowWindow(fenetreAnimHebergement, SW_HIDE);
}
return 0;
}
case WM_CLOSE:
ShowWindow(fenetreAnimHebergement, SW_HIDE); // Fermer fenetre et non detruire
return 0;
default:
return DefWindowProc(fenetreAnimHebergement,message,wParam,lParam);
}
} |
Partager