248365365体育投注

备用Vc-WM

字号+ 作者:365bet网上足球比赛 来源:365bet娱乐官网 2019-11-08 12:40

备用Vc-WM

1个
系统何时发送WM_PAINT消息?

系统在不同时间发送WM_PAINT消息。首次创建窗口,调整窗口大小,从另一个窗口获取窗口时
这些动作由系统管理,例如何时移动窗口,何时最大化或最小化窗口以及应用程序在消息处理中仅被动地接收消息。
绘图操作通过功能执行。在大多数情况下,应用程序还应该能够主动激活窗口中的绘图操作,例如当窗口中显示的数据更改时。
这是通过InvalidateRect和InvalidateRgn函数完成的。

如果应用程序的消息队列中没有其他消息队列,则InvalidateRect和InvalidateRgn将指定的区域添加到窗口的UpdateRegion中
在消息中,如果窗口的UpdateRegion不为空,则系统会自动生成WM_PAINT消息。

为什么在调用Invalidate时系统不发送WM_PAINT消息?
为什么我必须等到应用程序的消息队列为空?
WM_PAINT消息如何?
这是因为系统将窗口中的绘图操作视为低优先级操作,并尽可能多地向后推。

但是,这也有助于提高绘图效率。InvalidateRect和InvalidiateRgn使两个WM_PAINT消息无效
区域被添加在一起并使用WM_PAINT消息更新一次。这不仅避免了多次更新同一区域,而且优化了该区域。
应用程序更新操作。

这将使用InvalidateRect和InvalidateRgn使窗口区域无效,这取决于在正确的时间发送WM_PAINT的系统。
消息机制实际上是异步工作。换句话说,在无效窗口区域和发送WM_PAINT消息之间存在延迟。有时候
由于不需要此延迟,因此在使窗口区域无效之后是否可以使用SendMessage?
发送WM_PAINT消息以强制
该系统将立即重绘,但我们建议使用WindowsGDI提供更有用和更强大的功能UpdateWindow和RedrawWindow。

UpdateWindow验证窗口的UpdateRegion,如果不为空,则发送WM_PAINT消息。RedrawWindow给了我
有更多的控制权。例如,当重画非客户区域和背景时,无论UpdateRegion是否为空,都应始终发送WM_PAINT消息。


相关文章