Probleme de boite de dialogue

sergedes Messages postés 10 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 31 octobre 2009 - 26 août 2005 à 14:32
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 26 août 2005 à 15:38
bonjour,

j'ai un probleme. Je voudrais afficher une boite de dialogue a l'ecran, avec un message veuillez patienter pendant 3 secondes, et ensuite la faire disparaitre, pour afficher ensuite la boite de dialogue principal. Depuis ce matin, j'essaye, mais rien a faire, j'ai mis
Sleep(3000) dans différent message WM (WM_ACTIVATE, WM_SHOWWINDOW, WM_CREATE, ...) mais toujours rien.

Apres 3 secondes d'attente la boite de dialogue "Veuillez patienter" se dessine a l'ecran, mais pas avant.

Pouvez vous m'aider.

merci

serge.

bob

4 réponses

sergedes Messages postés 10 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 31 octobre 2009
26 août 2005 à 14:46
j'ai oublie d'ajouter, que pendant que j'ouvre cette fenetre, j'initialise un gsm par le biais de la rs232, qui dure 3 secondes pour verifier les infos du gsm.Merci d'avance.

bob
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 août 2005 à 15:05
Sleep() bloque le thread qui l'appelle.

ciao...
BruNews, MVP VC++
0
sergedes Messages postés 10 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 31 octobre 2009
26 août 2005 à 15:10
bonjour, bruNews,

je comprends mais mon problèmes et que meme si j'enleve le Sleep(), ca ne marche pas.

mon but est de faire apparaitre ma boite de dialogue a l'ecran ("Veuillez patienter"), ensuite d'initialiser les données vers le port série; et quand, c'est terminé, fermer la boite de dialogue, pour lancer la boite principal.

et c'est cela malheuresement, que je n'arrive pas a faire.

serge.

bob
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 août 2005 à 15:38
ta fenetre mère:

case WM_CREATE ou WM_INITDIALOG:
// toute initialisation graphique ici
DialogBoxParam(....); pour dialog d'attente, ainsi on est bloqué sur celle ci
return 0; // ou 1 si dialog

dans dialog de présentation:
case WM_INITDIALOG:
ShowWindow(hdlg, SW_SHOW); // on affiche
hprepare = CreateThread(.....); init ton gsm tant que non fini
WaitForSingleObject(hprepare, INFINITE);
CloseHandle(hprepare);
EndDialog(hdlg, 0);

ciao...
BruNews, MVP VC++
0
Rejoignez-nous