有没有办法以编程方式检查其消息队列中窗口消息的优先级?
例如:已知某些窗口消息WM_PAINT
和WM_TIMER
具有最低优先级,并且位于具有最高优先级的消息之后。
我正在寻找能够确认两条消息中哪一条具有最低优先级或最高优先级,或者哪条消息将首先发送还是最后发送的内容?
答案 0 :(得分:18)
这不是它的工作原理,Windows消息没有附加优先级。它主要取决于消息的生成方式。消息循环按以下顺序调度消息:
“从窗口状态合成”子句使WM_PAINT和WM_TIMER看起来具有低优先级。为什么快速移动鼠标不会使用鼠标消息淹没消息队列。然而,这不是唯一的,你可以调用UpdateWindow()来强制发送WM_PAINT消息,使其以“高优先级”发送。
答案 1 :(得分:1)
订单在GetMessage / PeekMessage文档中定义:
如果未指定过滤器,则在下面处理消息 订单:
- 已发送邮件
- 发布的消息
- 输入(硬件)消息和系统内部事件
- 再次发送邮件
- WM_PAINT消息
- WM_TIMER消息