UpdateLayeredWindowIndirect函数的更新区域是什么?

时间:2019-08-21 21:50:47

标签: winapi

我正在尝试使用UpdateLayeredWindowIndirect函数更新分层窗口的矩形区域,但在阅读文档时会感到困惑。

根据UpdateLayeredWindowIndirect的文档

  

UpdateLayeredWindowIndirect始终更新整个窗口。要更新部分窗口,请使用传统的WM_PAINT并使用SetLayeredWindowAttributes设置混合值。

但是第二个参数pULWInfo包含成员prcDirty,该成员似乎用于更新特定区域而不是整个窗口,

  

要更新的区域。此参数可以为NULL。如果为非NULL,则仅从源DC更新此矩形中的区域。

这两个描述对我来说似乎是矛盾的。他们指的是更新分层窗口的不同步骤吗?该功能背后的机制是什么?如果我尝试通过处理WM_PAINT进行异步更新,有什么区别?

1 个答案:

答案 0 :(得分:2)

我认为这是一个文档错误。看来UpdateLayeredWindowIndirect的文档复制了UpdateLayeredWindow的大部分信息;但是,UpdateLayeredWindow没有脏矩形参数。因此,该注释对UpdateLayeredWindow是正确的,但对UpdateLayeredWindowIndirect不正确。