使用PeekMessage后,调用postquitmessage(0)不能退出消息循环的原因
2010-07-07 16:56
696 查看
如果使用PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE),当调用postquitmessage(0)后,窗口被关闭,此时hwnd已经无效,那么PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)将会获取到一个0xa1的消息,这个消息不等于MSG_QUIT, 所以不会跳出循环,正确的做法是
PeekMessage(&msg, 0, 0, 0, PM_REMOVE)
PeekMessage(&msg, 0, 0, 0, PM_REMOVE)
相关文章推荐
- PostQuitMessage(0)要慎用,经常会造成MFC程序退出时内存泄露,还是尽量使用MFC基类的退出函数比较好。
- PostQuitMessage和PeekMessage的诡异行径
- MFC中PeekMessage的使用,非阻塞消息循环
- PostQuitMessage和PeekMessage的诡异行径
- PostQuitMessage(退出程序的一种方法)
- VCL定义和使用CM_Message的原因(主要是内部控制,同时可简化参数传递,还可截住消息,统一走消息路线,还可省内存)
- 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)
- 在使用reviewboard时,向分支添加新文件后,不能产生diff并由此就不能post-review新review request的原因
- 关于for each循环不能直接使用集合的remove方法的原因
- Windows消息响应机制之四:PostQuitMessage和GetMessage函数 .
- Windows消息响应机制之四:PostQuitMessage和GetMessage函数
- html/js调用ocx控件(activex控件),不能加载,不能使用的原因
- qApp.quit()的使用、程序事件循环和程序退出顺序分析。
- 使用GraphHttpClient调用Microsoft Graph接口 - POST
- Delphi 2010 refactor / refactoring 重构不能使用的原因以及解决
- 使用cvs的时候,WEB-INF/classes中不能编译生成class文件的原因?
- 引用webservice 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
- 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
- 如何使用PHP调用API接口( 如何POST一个JSON格式的数据给Restful服务)
- 消息的创建,发送和接收 使用系统调用shmget(),sgmat(),smgdt(),shmctl()