当运行复杂的计算或循环的时候,为了使windows程序不产生假死现象(不响应任何消息,cpu100%占用).要在适当地方添下如下消息处理机能。
// Process the thread's window message
MSG msg;
while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
if(msg.message == WM_QUIT) // Check for the WM_QUIT message
break;
// Send the message to the window
procedure
TranslateMessage(&msg);
DispatchMessage(&msg);
}
另外说明:
PeekMessage和GetMessage的区别
1.GetMessage将等到有合适的消息时才返回,而PeekMessage只是撇一下消息队列.
2.GetMessage会将消息从队列中删除,而PeekMessage可以设置最后一个参数wRemoveMsg来决 定是否将消息保留在队列中.
为了防止Windows程序在进行复杂计算或循环时出现假死(无响应,CPU占用高),可以使用PeekMessage进行消息处理。在适当位置插入消息处理代码,检查并处理WM_QUIT消息,通过TranslateMessage和DispatchMessage发送到窗口过程。PeekMessage与GetMessage的主要区别在于,PeekMessage不会阻塞等待,且可选择是否移除消息。
1004

被折叠的 条评论
为什么被折叠?



