Je programme avec winapi. Comment puis-je attendre un message pendant une durée définie? S'il n'y a pas de message, je peux faire une autre tâche. Je ne peux pas utiliser Veille, car la procédure de rappel de la fenêtre sera retardée.Attendre un message de fenêtre pendant une durée définie
while (true){
...//wait a message for 30 miliseconds
GetMessage(&message, hwnd, 0, 0)) or PeekMessage(&message, hwnd, 0, 0, PM_REMOVE)
...
if (no_message){
call_a_function();
} else {
if (finish)
break;
TranslateMessage(&message);
DispatchMessage(&message);
...//set to wait 30 minus elapsed time
}
}
Cette fonction n'attend pas les événements de fenêtre. – Squall
Oui, c'est le cas. Voir l'argument dwWaitMask pour les types d'événements sur lesquels il peut se réveiller. –
Cette fonction échoue et GetLastError() renvoie ERROR_INVALID_HANDLE. J'ai essayé MsgWaitForMultipleObjects (1, (HANDLE *) & hwnd, true, 30, QS_ALLEVENTS); MsgWaitForMultipleObjects (1, & current_thread, true, 30, QS_ALLEVENTS); – Squall