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
更新區域的控制碼。 如果 hrgnUpdate 和 lprcUpdate 參數都是 Null,則會將整個工作區新增至更新區域。
[in] flags
一或多個重繪旗標。 此參數可用來使視窗失效或驗證視窗、控制項重繪,以及控制哪些視窗受到 RedrawWindow影響。
下列旗標可用來使視窗失效。
旗標 (失效) | 描述 |
---|---|
|
使視窗在重新繪製視窗時收到 WM_ERASEBKGND 訊息。 也必須指定RDW_INVALIDATE旗標;否則,RDW_ERASE沒有任何作用。 |
|
造成視窗的任何部分交集更新區域,以接收 WM_NCPAINT 訊息。 也必須指定RDW_INVALIDATE旗標;否則,RDW_FRAME沒有任何作用。 除非指定RDW_UPDATENOW或RDW_ERASENOW,否則在RedrawWindow執行期間通常不會傳送WM_NCPAINT訊息。 |
|
不論視窗的任何部分是否無效,都會導致 WM_PAINT 訊息張貼至視窗。 |
|
使 lprcUpdate 或 hrgnUpdate (只能是非Null) 。 如果兩者都是 Null,整個視窗就會失效。 |
下列旗標是用來驗證視窗。
旗標 (驗證) | 描述 |
---|---|
|
隱藏任何擱 置WM_ERASEBKGND 訊息。 |
|
隱藏任何擱 置WM_NCPAINT 訊息。 此旗標必須與RDW_VALIDATE搭配使用,且通常與RDW_NOCHILDREN搭配使用。 RDW_NOFRAME應該小心使用,因為它可能會導致視窗的元件不正確地繪製。 |
|
隱藏任何擱置的內部 WM_PAINT 訊息。 此旗標不會影響WM_PAINT非Null更新區域所產生的訊息。 |
|
驗證 lprcUpdate 或 hrgnUpdate (可能不是Null) 。 如果兩者都是 Null,則會驗證整個視窗。 此旗標不會影響內部 WM_PAINT 訊息。 |
發生重繪時,下列旗標會控制。 除非指定其中一個旗標,否則 RedrawWindow將不會重新繪製。
旗標 | 描述 |
---|---|
|
讓受影響的視窗 (如RDW_ALLCHILDREN和RDW_NOCHILDREN旗標所指定,) 在函式傳回之前接收 WM_NCPAINT 和 WM_ERASEBKGND 訊息。 WM_PAINT 訊息會在一般時間接收。 |
|
在函式傳回之前,讓受影響的視窗 (RDW_ALLCHILDREN和RDW_NOCHILDREN旗標) 接收 WM_NCPAINT、 WM_ERASEBKGND和 WM_PAINT 訊息。 |
根據預設, 受 RedrawWindow 影響的視窗取決於指定的視窗是否具有WS_CLIPCHILDREN樣式。 非WS_CLIPCHILDREN樣式的子視窗不會受到影響;非WS_CLIPCHILDREN視窗會以遞迴方式驗證或失效,直到遇到WS_CLIPCHILDREN視窗為止。 下列旗標會控制哪些視窗受到 RedrawWindow 函式的影響。
旗標 | 描述 |
---|---|
|
在重繪作業中包含子視窗,如果有的話。 |
|
如果有任何,則排除重新繪製作業中的子視窗。 |
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。
備註
當 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) |