WM_SETREDRAW訊息
您可以將 WM_SETREDRAW 訊息傳送至視窗,以允許重新繪製該視窗中的變更,或防止重新繪製該視窗中的變更。
若要傳送此訊息,請使用下列參數呼叫 SendMessage 函式。
SendMessage(
(HWND) hWnd,
WM_SETREDRAW,
(WPARAM) wParam,
(LPARAM) lParam
);
wParam
重繪狀態。 如果此參數為 TRUE,則可以在變更之後重新繪製內容。 如果此參數為 FALSE,則變更之後就無法重新繪製內容。
lParam
不使用此參數。
如果應用程式處理此訊息,您的應用程式應該會傳回 0。
如果您的應用程式必須將數個專案新增至清單方塊,此訊息會很有用。 您的應用程式可以呼叫此訊息 ,並將 wParam 設定為 FALSE、新增專案,然後使用 wParam 設定為 TRUE再次呼叫訊息。 最後,您的應用程式可以呼叫 RedrawWindow (hWnd、 Null、 Null、RDW_ERASE |RDW_FRAME |RDW_INVALIDATE |RDW_ALLCHILDREN) 導致重新繪製清單方塊。
注意
您應該將 RedrawWindow 與指定的旗標搭配使用,而不是 InvalidateRect,因為前者對於擁有其本身非client 區域的某些控制項是必要的,或具有會導致它們被指定為非工作區 (的視窗樣式,例如 WS_THICKFRAME、 WS_BORDER或 WS_EX_CLIENTEDGE) 。 如果控制項沒有非工作區,則具有這些旗標的 RedrawWindow 只會執行與 InvalidateRect 相同的無效。
將WM_SETREDRAW訊息傳遞至DefWindowProc函式會在wParam設定為FALSE時,從視窗移除WS_VISIBLE樣式。 雖然視窗內容在畫面上保持可見狀態, 但 IsWindowVisible 函式會在處於此狀態的視窗上呼叫時傳回 FALSE 。
將WM_SETREDRAW訊息傳遞至DefWindowProc函式,會在wParam設定為TRUE時,將WS_VISIBLE樣式新增至視窗。 如果您的應用程式將wParam設定為TRUE的WM_SETREDRAW訊息傳送至隱藏視窗,則視窗會變成可見。
Windows 10及更新版本;Windows Server 2016和更新版本。 系統會在視窗上設定名為 SysSetRedraw 的屬性,其視窗程式會將 WM_SETREDRAW 訊息傳遞給 DefWindowProc。 您可以使用 GetProp 函式在可用時取得屬性值。 停用重繪時,GetProp會傳回非零值。 啟用重繪時,或視窗屬性不存在時,GetProp會傳回零。
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
標頭 |
|