窗口更新锁

【勇芳软件工作室】汉化HomePreviousNext

A 【窗口更新锁】是一个临时暂停绘画的窗口。当用户移动或调整窗口大小时,Windows会使用该锁来阻止其他窗口绘制跟踪矩形。如果使用自己的窗口执行类似的移动或大小操作,应用程序可以使用锁来防止绘图。

应用程序使用LockWindowUpdate功能设置或清除窗口更新锁定,指定要锁定的窗口。该锁适用于给定的窗口及其所有子窗口。当锁定设置时,GetDCBeginPaint函数返回一个具有空白可见区域的显示DC。鉴于此,应用程序可以继续在窗口中绘制,但所有输出都被剪切。锁定一直持续到应用程序通过调用LockWindowUpdate清除它,为窗口指定NULL。虽然LockWindowUpdate强制窗口的可见区域为空,但该函数不会使给定的窗口不可见,也不会清除WS_VISIBLE样式位。

锁定设置后,应用程序可以使用具有DCX_LOCKWINDOWUPDATE值的GetDCEx函数来检索显示DC以绘制锁定的窗口。这允许应用程序在处理键盘或鼠标消息时绘制跟踪矩形。当用户移动和大小窗口时,Windows使用此方法。GetDCEx从显示DC缓存中检索显示DC,因此应用程序必须在绘制后尽快释放DC。

当设置窗口更新锁定时,系统为每个锁定的窗口创建一个累积的边界矩形。当锁定被清除时,Windows使用这个边界矩形设置窗口及其子窗口的更新区域,迫使最终的WM_PAINT消息。如果累积的边界矩形为空(即,如果在设置锁定时未绘制图形),则不会更新更新区域。