关于windows消息优先级
2014-03-29 12:19
176 查看
关于windows消息循环时消息队列的优先级顺序,参考<windows核心编程》,这是中文版的图示
从GetMessage检查消息的算法中我们可以看到消息的优先级顺序发送消息、登记消息、退出消息、输入消息、重绘消息、定时消息。
我们可以看PAINT消息和SetTimer消息的优先级都是比较低的,所以在程序存在死循环或者无限等待的时候这两个消息容易受到阻塞而无法发送出去得到响应,因而此时我们常用的做法是使用多线程或者使用PeekMessage函数,将do thing 放到else中或者为循环单独开一个线程。
从GetMessage检查消息的算法中我们可以看到消息的优先级顺序发送消息、登记消息、退出消息、输入消息、重绘消息、定时消息。
我们可以看PAINT消息和SetTimer消息的优先级都是比较低的,所以在程序存在死循环或者无限等待的时候这两个消息容易受到阻塞而无法发送出去得到响应,因而此时我们常用的做法是使用多线程或者使用PeekMessage函数,将do thing 放到else中或者为循环单独开一个线程。
while (TRUE) { if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) break ; TranslateMessage (&msg) ; DispatchMessage (&msg) ; } else { // do thing } }
相关文章推荐
- 关于windows消息
- [New Portal]Windows Azure Cloud Service (34) TechEd 2013 North America关于Azure的最新消息
- [New Portal]Windows Azure Platform (七十) TechEd 2013 North America关于Azure的最新消息
- 关于windows消息的派发
- 关于windows消息(不断修改中)
- 关于Windows消息钩子的理解与测试项目
- [转]关于windows 的窗口消息和WM_PAINT
- Windows的自带控件(比如TButton)大多数消息都由它自己处理,Delphi覆盖了那么多WM_函数优先级较低,一般用不上
- 关于 OnCloseQuery: 顺序、不能关机等(所有的windows的广播消息都是逐窗口传递的)——如果一个窗体的OnCloseQuery事件中如果写了代码那么WM_QUERYENDSESSION消息就传不过去了msg.result会返回0,关机事件也就停止了
- Windows消息关于谁调用的谁
- 关于HOOK,如何通过钩子截获指定窗口的所有消息 SetWindowsHookEx demo
- 关于Windows消息队列的几个问题
- 关于Windows消息的发送和接收入门
- 关于Windows消息队列的几个问题
- Windows 消息优先级
- 关于Windows窗口消息
- 关于Windows消息的发送和接收入门
- 又一篇关于windows消息队列比较好的文章
- 关于C# windows发送消息
- 收集关于Windows消息的代码目录