Windows 消息处理 - PeekMessage

为了防止Windows程序在进行复杂计算或循环时出现假死(无响应,CPU占用高),可以使用PeekMessage进行消息处理。在适当位置插入消息处理代码,检查并处理WM_QUIT消息,通过TranslateMessage和DispatchMessage发送到窗口过程。PeekMessage与GetMessage的主要区别在于,PeekMessage不会阻塞等待,且可选择是否移除消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当运行复杂的计算或循环的时候,为了使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来决    定是否将消息保留在队列中.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值