备用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消息。


发表时间:2019-11-08

相关文章

备用Vc-WM
发现金山大尾的未知人生
[苦味和水煮效果]
组的发音
我们怎么称呼它?
选择正确的句子以理解句子的含义()
芭比娃娃实时版芭比娃娃实时版完整在线版免费查看
S正式亮相C。我们可以期待未来的实力。
棉苗和黑棉螨有什么区别?
市公共安全交通警察局已采取许多步骤,以确保活动期间的交通顺畅。