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



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

根据UpdateLayeredWindowIndirect的文档,

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

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

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

这两种描述在我看来是矛盾的。他们指的是更新分层窗口的不同步骤吗?此功能背后的机制是什么?如果我尝试通过处理WM_PAINT来异步更新有什么区别?

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

最新更新