Nouveau thread?

Le
Nicolas IG
Bonjour,

Je développe actuellement un contrôle activeX (MFC, visual C++) et je suis
confronté au problème suivant:
Grace à un Timer, je fais clignoter un symbole. Au clic d'un bouton, je
lance un Sleep de 5 secondes suivi d'un MessageBox.
Or, lors du Sleep, le clignotement s'arrette et ne reprend qu'après le
MessageBox clos.

Je suis novice dans ce type de programation, mais il me semble que le Sleep
fasse dormir le processus de clignotement.
Comment puis-je faire pour lancer un Sleep sans pour autant bloquer tout le
reste de l'application? Faut-il que je le lance dans un nouveau thread? Et
si oui
comment faire une telle chose?

Cordialement,
Nicolas
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Manuel Leclerc
Le #9848731
Nicolas IG a écrit :

Comment puis-je faire pour lancer un Sleep sans pour
autant bloquer tout le reste de l'application? Faut-il
que je le lance dans un nouveau thread? Et si oui
comment faire une telle chose?



Au click sur le bouton, tu peux créer un deuxième timer
de 5 secondes et afficher ta message box à l'arrivée du
premier message de ce deuxième timer (n'oublies alors pas
de le détruire).

Mais,

1) pourquoi diable veux-tu faire un truc pareil ?

2) n'oublies pas de regarder les Timers Multi-Media si
tu veux une précision de l'ordre de la milli-seconde
pour tes clignotements
3) non, je plaisante.

--
Apparently some people don't want those Red Hat guys
to become billionaires. Shocking.
--forbes.com
Nicolas IG
Le #9848651
Voici la solution : _beginthreadex()
Exemple:

#include
int main()
{
...
HANDLE hThread;
unsigned threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &test, NULL, 0, &threadID );
CloseHandle( hThread );
...
}

unsigned __stdcall test ( void* pArguments )
{
Sleep (2000);
_endthreadex( 0 );
return 0;
}






"Manuel Leclerc" news:4096650b$
Nicolas IG a écrit :

> Comment puis-je faire pour lancer un Sleep sans pour
> autant bloquer tout le reste de l'application? Faut-il
> que je le lance dans un nouveau thread? Et si oui
> comment faire une telle chose?

Au click sur le bouton, tu peux créer un deuxième timer
de 5 secondes et afficher ta message box à l'arrivée du
premier message de ce deuxième timer (n'oublies alors pas
de le détruire).

Mais,

1) pourquoi diable veux-tu faire un truc pareil ?

2) n'oublies pas de regarder les Timers Multi-Media si
tu veux une précision de l'ordre de la milli-seconde
pour tes clignotements
3) non, je plaisante.

--
Apparently some people don't want those Red Hat guys
to become billionaires. Shocking.
--forbes.com



Publicité
Poster une réponse
Anonyme