私はwinapiでプログラミングしています。定義された時間の間、メッセージを待つにはどうすればよいですか? メッセージがない場合は、別のタスクを実行できます。私は、ウィンドウのコールバックプロシージャが遅れるので、スリープを使用することはできません。定義時間のウィンドウメッセージを待ちます
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
}
}
この関数は、ウィンドウイベントを待機しません。 – Squall
はい、あります。起きる可能性があるイベントの種類については、dwWaitMask引数を参照してください。 –
この関数は失敗し、GetLastError()はERROR_INVALID_HANDLEを返します。試しました MsgWaitForMultipleObjects(1、(HANDLE *)&hwnd、true、30、QS_ALLEVENTS); MsgWaitForMultipleObjects(1、&current_thread、true、30、QS_ALLEVENTS); – Squall