RedrawWindow 函式 (winuser.h)

RedrawWindow函式會更新視窗工作區中指定的矩形或區域。

語法

BOOL RedrawWindow(
  [in] HWND       hWnd,
  [in] const RECT *lprcUpdate,
  [in] HRGN       hrgnUpdate,
  [in] UINT       flags
);

參數

[in] hWnd

要重新繪製之視窗的控制碼。 如果此參數為 Null,則會更新桌面視窗。

[in] lprcUpdate

RECT結構的指標,其中包含更新矩形的裝置單位座標。 如果 hrgnUpdate 參數識別區域,則會忽略此參數。

[in] hrgnUpdate

更新區域的控制碼。 如果 hrgnUpdatelprcUpdate 參數都是 Null,則會將整個工作區新增至更新區域。

[in] flags

一或多個重繪旗標。 此參數可用來使視窗失效或驗證視窗、控制項重繪,以及控制哪些視窗受到 RedrawWindow影響。

下列旗標可用來使視窗失效。

旗標 (失效) 描述
RDW_ERASE
使視窗在重新繪製視窗時收到 WM_ERASEBKGND 訊息。 也必須指定RDW_INVALIDATE旗標;否則,RDW_ERASE沒有任何作用。
RDW_FRAME
造成視窗的任何部分交集更新區域,以接收 WM_NCPAINT 訊息。 也必須指定RDW_INVALIDATE旗標;否則,RDW_FRAME沒有任何作用。 除非指定RDW_UPDATENOW或RDW_ERASENOW,否則在RedrawWindow執行期間通常不會傳送WM_NCPAINT訊息。
RDW_INTERNALPAINT
不論視窗的任何部分是否無效,都會導致 WM_PAINT 訊息張貼至視窗。
RDW_INVALIDATE
使 lprcUpdatehrgnUpdate (只能是非Null) 。 如果兩者都是 Null,整個視窗就會失效。
 

下列旗標是用來驗證視窗。

旗標 (驗證) 描述
RDW_NOERASE
隱藏任何擱 置WM_ERASEBKGND 訊息。
RDW_NOFRAME
隱藏任何擱 置WM_NCPAINT 訊息。 此旗標必須與RDW_VALIDATE搭配使用,且通常與RDW_NOCHILDREN搭配使用。 RDW_NOFRAME應該小心使用,因為它可能會導致視窗的元件不正確地繪製。
RDW_NOINTERNALPAINT
隱藏任何擱置的內部 WM_PAINT 訊息。 此旗標不會影響WM_PAINT非Null更新區域所產生的訊息。
RDW_VALIDATE
驗證 lprcUpdatehrgnUpdate (可能不是Null) 。 如果兩者都是 Null,則會驗證整個視窗。 此旗標不會影響內部 WM_PAINT 訊息。
 

發生重繪時,下列旗標會控制。 除非指定其中一個旗標,否則 RedrawWindow將不會重新繪製。

旗標 描述
RDW_ERASENOW
讓受影響的視窗 (如RDW_ALLCHILDREN和RDW_NOCHILDREN旗標所指定,) 在函式傳回之前接收 WM_NCPAINTWM_ERASEBKGND 訊息。 WM_PAINT 訊息會在一般時間接收。
RDW_UPDATENOW
在函式傳回之前,讓受影響的視窗 (RDW_ALLCHILDREN和RDW_NOCHILDREN旗標) 接收 WM_NCPAINTWM_ERASEBKGNDWM_PAINT 訊息。
 

根據預設, 受 RedrawWindow 影響的視窗取決於指定的視窗是否具有WS_CLIPCHILDREN樣式。 非WS_CLIPCHILDREN樣式的子視窗不會受到影響;非WS_CLIPCHILDREN視窗會以遞迴方式驗證或失效,直到遇到WS_CLIPCHILDREN視窗為止。 下列旗標會控制哪些視窗受到 RedrawWindow 函式的影響。

旗標 描述
RDW_ALLCHILDREN
在重繪作業中包含子視窗,如果有的話。
RDW_NOCHILDREN
如果有任何,則排除重新繪製作業中的子視窗。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。

備註

RedrawWindow 用來使桌面視窗的一部分失效時,桌面視窗不會收到 WM_PAINT 訊息。 為了重新繪製桌面,應用程式會使用 RDW_ERASE 旗標來產生 WM_ERASEBKGND 訊息。

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-draw-l1-1-0 (在 Windows 8)

另請參閱

GetUpdateRect

GetUpdateRgn

InvalidateRect

InvalidateRgn

繪製和繪製函式

繪製和繪圖概觀

矩形

UpdateWindow