WM_SETREDRAW訊息

您可以將 WM_SETREDRAW 訊息傳送至視窗,以允許重新繪製該視窗中的變更,或防止重新繪製該視窗中的變更。

若要傳送此訊息,請使用下列參數呼叫 SendMessage 函式。

SendMessage(
  (HWND) hWnd,
  WM_SETREDRAW,
  (WPARAM) wParam,
  (LPARAM) lParam
);

參數

wParam

重繪狀態。 如果此參數為 TRUE,則可以在變更之後重新繪製內容。 如果此參數為 FALSE,則變更之後就無法重新繪製內容。

lParam

不使用此參數。

傳回值

如果應用程式處理此訊息,您的應用程式應該會傳回 0。

備註

如果您的應用程式必須將數個專案新增至清單方塊,此訊息會很有用。 您的應用程式可以呼叫此訊息 ,並將 wParam 設定為 FALSE、新增專案,然後使用 wParam 設定為 TRUE再次呼叫訊息。 最後,您的應用程式可以呼叫 RedrawWindow (hWndNullNull、RDW_ERASE |RDW_FRAME |RDW_INVALIDATE |RDW_ALLCHILDREN) 導致重新繪製清單方塊。

注意

您應該將 RedrawWindow 與指定的旗標搭配使用,而不是 InvalidateRect,因為前者對於擁有其本身非client 區域的某些控制項是必要的,或具有會導致它們被指定為非工作區 (的視窗樣式,例如 WS_THICKFRAMEWS_BORDERWS_EX_CLIENTEDGE) 。 如果控制項沒有非工作區,則具有這些旗標的 RedrawWindow 只會執行與 InvalidateRect 相同的無效。

WM_SETREDRAW訊息傳遞至DefWindowProc函式會在wParam設定為FALSE時,從視窗移除WS_VISIBLE樣式。 雖然視窗內容在畫面上保持可見狀態, 但 IsWindowVisible 函式會在處於此狀態的視窗上呼叫時傳回 FALSE

WM_SETREDRAW訊息傳遞至DefWindowProc函式,會在wParam設定為TRUE時,將WS_VISIBLE樣式新增至視窗。 如果您的應用程式將wParam設定為TRUEWM_SETREDRAW訊息傳送至隱藏視窗,則視窗會變成可見。

Windows 10及更新版本;Windows Server 2016和更新版本。 系統會在視窗上設定名為 SysSetRedraw 的屬性,其視窗程式會將 WM_SETREDRAW 訊息傳遞給 DefWindowProc。 您可以使用 GetProp 函式在可用時取得屬性值。 停用重繪時,GetProp會傳回非零值。 啟用重繪時,或視窗屬性不存在時,GetProp會傳回零。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
標頭
Winuser.h (包括 Windows.h)

另請參閱