Windows の invalidateRect 関数の使い方は?
Windowsでは、InvalidateRect関数を使用して、指定されたウィンドウやコントロールの領域を無効にして再描画を要求します。その関数プロトタイプは次のとおりです。
BOOL InvalidateRect(
HWND hWnd, // 窗口句柄
const RECT *lpRect, // 指向要无效的矩形区域的指针,如果为NULL则无效整个窗口
BOOL bErase // 指定是否擦除背景,TRUE为擦除,FALSE为不擦除
);
InvalidateRect関数の一般的な手順は次のとおりです。
- ウィンドウハンドル(hWnd)を取得する。
- 矩形領域の左上および右下の座標を指定してRECT構造体を作り、無効にする。ウィンドウ全体を無効にする場合は、lpRectパラメータをNULLに設定する。
- InvalidateRect関数に、ウィンドウハンドル、RECT構造体のポインタ、および消去フラグ(TRUEまたはFALSE)を引数として渡す。
以下のコードを参照してください。
// 获取窗口句柄
HWND hWnd = GetSafeHwnd();
// 创建一个RECT结构体,无效整个窗口
RECT rect;
GetClientRect(hWnd, &rect);
// 调用InvalidateRect函数,擦除背景
InvalidateRect(hWnd, &rect, TRUE);
以上のコードはウィンドウ全体を無効化し、再描画をリクエストし、背景を消去します。