WM_SIZE 和 WM_PAINT 消息的优先级

3 c winapi

WM_SIZEWM_PAINT消息都被发送时(例如:当我将窗口调整为更大的大小时),是否保证WM_SIZE消息会在WM_PAINT消息之前发送?

rod*_*igo 5

是的,WM_SIZE首先收到,然后WM_PAINT以新的大小发送。

实际上,WM_PAINT是一条惰性消息(另一个是WM_TIMERIIRC):它实际上并未发送到消息队列。相反,当窗口失效时,会设置一个标志,当您调用GetMessage()并且队列中没有消息时,它会检查失效标志。如果它被设置,它将返回一个伪造的WM_PAINT消息。

WM_PAINT具有低优先级的效果,并在一次重绘中有效地融合了所有未决的失效。

  • `WM_PAINT` 是*通常* 一个像你描述的合成消息。但是,`UpdateWindow()` 和`RedrawWindow(RDW_UPDATENOW)` 会生成一个真正的`WM_PAINT` 消息,该消息会立即直接发送到窗口,绕过消息队列。窗口不会知道其中的区别,它会在被告知要绘制时简单地进行绘制。 (2认同)