WinAPI の奇妙な動作に遭遇したので、私にはそう思われます。私のプログラムでは、ウィンドウのタイマーを設定しています
::SetTimer(window_handle, timer_id, 10, NULL);
ウィンドウ プロシージャで WM_TIMER メッセージを処理します。必要な CPU 時間を短縮するため::WaitMessage
に、メッセージ ポンプでも関数を使用しています。私がそこに関数を持っている限り::WaitMessage
、しばらくすると WM_TIMER メッセージが来なくなることがわかりました。メッセージポンプから削除すると、すべてが期待どおりに機能します。
ここで、タイマーの設定が間違っているのか、それとも の標準的な動作なのか疑問に思います::WaitMessage
。MSDN と Web を検索しても、このような理由がわかりませんでした。
私が使用するメッセージポンプは次のとおりです。
while(true) {
if(GetMessage(&msg, _window_handle, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
return 0;
}
WaitMessage();
}
誰かが私のためにこれを片付けてくれることを願っています。