小编Cyi*_*nor的帖子

WinAPI :: WaitMessage阻止WM_TIMER的到来

我遇到了一个,所以在我看来,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)

希望有人可以为我清除这一点.

c++ winapi timer window-messages

0
推荐指数
1
解决办法
1815
查看次数

标签 统计

c++ ×1

timer ×1

winapi ×1

window-messages ×1