Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nouveau thread?

2 réponses
Avatar
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

2 réponses

Avatar
Manuel Leclerc
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
Avatar
Nicolas IG
Voici la solution : _beginthreadex()
Exemple:

#include <process.h>

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" a écrit dans le message de
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