确定窗口消息的优先级

有没有办法以编程方式检查其消息队列中窗口消息的优先级?

例如:已知某些窗口消息WM_PAINTWM_TIMER具有最低优先级,并且位于具有最高优先级的消息之后。

我正在寻找一些可以确认两条消息中哪一条具有最低优先级或最高优先级或哪条消息将首先发送还是最后发送的消息?

这不是它的工作原理,Windows消息没有附加优先级。 它主要取决于消息的生成方式。 消息循环按以下顺序调度消息:

  • 首先,使用SendMessage()生成的任何消息都按调用的顺序分派
  • 接下来,使用PostMessage()生成并以队列顺序存储在消息队列中的任何消息
  • 接下来,从窗口状态合成的任何消息。 WM_TIMER,WM_PAINT和WM_MOUSEMOVE符合此类别。

“从窗口状态合成”子句使WM_PAINT和WM_TIMER看起来具有低优先级。 为什么快速移动鼠标不会使用鼠标消息淹没消息队列。 然而,这不是唯一的,您可以调用UpdateWindow()来强制发送WM_PAINT消息,使其以“高优先级”进行调度。