我遇到了一个,所以在我看来,WinAPI的奇怪行为.在我的程序中,我正在为窗口设置计时器
::SetTimer(window_handle, timer_id, 10, NULL);
Run Code Online (Sandbox Code Playgroud)
并在我的窗口过程中处理WM_TIMER消息.为了减少所需的CPU时间,我也在::WaitMessage消息泵中使用该功能.事实证明,只要我有::WaitMessage那里的功能,WM_TIMER消息就会在一段时间后停止.如果我从我的消息泵中删除它,一切正常,如预期的那样.
现在我想知道我设置我的计时器错误或者这是否是标准行为::WaitMessage.搜索MSDN和网络并没有让我知道为什么会这样.
这是我使用的消息泵:
while(true) {
if(GetMessage(&msg, _window_handle, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
return 0;
}
WaitMessage();
}
Run Code Online (Sandbox Code Playgroud)
希望有人可以为我清除这一点.