我正在尝试使用UpdateLayeredWindowIndirect函数更新分层窗口的矩形区域,但在阅读文档时会感到困惑。
根据UpdateLayeredWindowIndirect的文档
UpdateLayeredWindowIndirect始终更新整个窗口。要更新部分窗口,请使用传统的WM_PAINT并使用SetLayeredWindowAttributes设置混合值。
但是第二个参数pULWInfo
包含成员prcDirty
,该成员似乎用于更新特定区域而不是整个窗口,
要更新的区域。此参数可以为NULL。如果为非NULL,则仅从源DC更新此矩形中的区域。
这两个描述对我来说似乎是矛盾的。他们指的是更新分层窗口的不同步骤吗?该功能背后的机制是什么?如果我尝试通过处理WM_PAINT进行异步更新,有什么区别?
答案 0 :(得分:2)
我认为这是一个文档错误。看来UpdateLayeredWindowIndirect
的文档复制了UpdateLayeredWindow
的大部分信息;但是,UpdateLayeredWindow
没有脏矩形参数。因此,该注释对UpdateLayeredWindow
是正确的,但对UpdateLayeredWindowIndirect
不正确。