共用方式為


視窗更新鎖定

視窗更新鎖定 是暫時暫停視窗中的繪圖。 每當使用者移動或調整視窗大小時,系統會使用鎖定來防止其他視窗在追蹤矩形上繪製。 如果應用程式使用自己的視窗執行類似的移動或重設大小作業,則可以使用鎖定來防止繪製。

應用程式會使用 LockWindowUpdate 函式來設定或清除視窗更新鎖定,並指定要鎖定的視窗。 鎖定會套用至指定的視窗及其所有子視窗。 設定鎖定時,GetDCBeginPaint 函式會傳回顯示裝置內容,且具有空白的可見區域。 鑒於此狀況,應用程式可以繼續在視窗中繪製,但會裁剪所有輸出。 鎖定會持續存在,直到應用程式呼叫lockWindowUpdate 來清除它為止,並指定視窗的NULL 。 雖然 LockWindowUpdate 會強制視窗的可見區域是空的,但函式不會讓指定的視窗不可見,也不會清除WS_VISIBLE樣式位。

設定鎖定之後,應用程式可以使用 GetDCEx 函式搭配 DCX_LOCKWINDOWUPDATE 值來擷取顯示裝置內容,以繪製鎖定的視窗。 這可讓應用程式在處理鍵盤或滑鼠訊息時繪製追蹤矩形。 當使用者移動和調整視窗大小時,系統會使用此方法。 GetDCEx 從顯示裝置內容快取擷取顯示裝置內容,因此應用程式必須在繪製之後儘快釋放裝置內容。

設定視窗更新鎖定時,系統會為每個鎖定的視窗建立累積周框。 清除鎖定時,系統會使用此周框來設定視窗及其子視窗的更新區域,強制最終 WM_PAINT 訊息。 如果累積周框是空的(也就是說,如果在設定鎖定時沒有發生繪圖),則不會設定更新區域。