InvalidateRect

InvalidateRect

InvalidateRect是一個函式,該函式向指定的窗體更新區域添加一個矩形,然後視窗客戶區域的這一部分將被重新繪製。

函式說明

該函式向指定的窗體更新區域添加一個矩形,然後視窗客戶區域的這一部分將被重新繪製。

BOOL InvalidateRect(

HWND hWnd, // handle of window with changed update region

CONST RECT *lpRect, // address of rectangle coordinates

BOOL bErase // erase-background flag

);

參數:

hWnd:要更新的客戶區所在的窗體的句柄。如果為NULL,則系統將在函式返回前重新繪製所有的視窗, 然後傳送 WM_ERASEBKGNDWM_PAINT 給視窗過程處理函式。

lpRect:無效區域的矩形代表,它是一個結構體指針,存放著矩形的大小。如果為NULL,全部的視窗客戶區域將被增加到更新區域中。

bErase:指出無效矩形被標記為有效後,是否重畫該區域,重畫時用預先定義好的畫刷。當指定TRUE時需要重畫。

返回值:

函式成功則返回非零值,否則返回零值。

說明:被標記為無效矩形的區域直到WM_PAINT訊息被處理完之後才會消失,或者使用ValidateRect(),ValidateRgn()函式來使之有效。當應用程式的訊息佇列中為空時,並且窗體要更新的區域非空時,系統會傳送一個WM_PAINT訊息到窗體。

這兩個都用於聲明客戶區無效,當下一個WM_PAINT訊息到來時發生重畫。

其中InvalidateRect(hwnd, NULL, true);重畫時將擦除背景。

InvalidateRect(hwnd, NULL, false);重畫時不擦除背景

需要:

Windows NT/2000/XP/Vista: 包含Windows NT 3.1以及之後版本。

Windows 95/98/Me: 包含Windows 95 以及之後版本。

Header: 聲明在 Winuser.h中; 包含在Windows.h中。

Library: Use User32.lib.

其他說明:InvalidateRect是將視窗中的一塊矩形區域標註為“無效”,系統會不斷向視窗傳送WM_PAINT訊息令其重繪。在回響WM_PAINT訊息時,需要調用BeginPaint獲取DC來進行重繪。該函式會合併所有“無效”區域,對DC進行裁剪,將整個視窗標註為“有效”,清除WM_PAINT訊息。DC經裁剪之後,在進行繪製時,超出DC範圍的操作將不被處理,所以即使在回響WM_PAINT訊息時繪製的是整個視窗,而實際上繪製的也只是“無效”區域。恰當地使用InvalidateRect進行刷新比刷新整個視窗的效率要高。在WM_PAINT訊息時,應儘量根據PAINTSTRUCT結構中rcPaint指定的矩形來處理重繪,減少執行不必要的代碼,從而提高效率。

調用InvalidateRect後不需要手動傳送WM_PAINT訊息。

VB聲明

Declare Function InvalidateRect Lib "user32" Alias " InvalidateRect" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long

易語言聲明

.版本 2

.DLL命令 InvalidateRect, 邏輯型, "user32", "InvalidateRect"

.參數 hWnd, 整數型

.參數 lpRect, rect, 傳址

.參數 bErase, 邏輯型

相關詞條

相關搜尋

熱門詞條

聯絡我們