MFCにおけるInvalidateRect関数の用途は?
InvalidateRect 関数は、ウィンドウの領域を破棄してシステムに再描画を強制的に実行するために MFC で使用される関数です。
afx_msg void OnPaint();
ウインドウ・クラスのメッセージマップにOnPaint関数の処理を追加する:
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
//…
ON_WM_PAINT() END_MESSAGE_MAP()
OnPaint 関数で描画処理を行う。
void CMyWnd::OnPaint() {
CPaintDC dc(this); // 设备上下文
// 绘图操作
// … }
ウィンドウ領域を無効にしたい場所にInvalidateRect関数を呼び出します:
InvalidateRect(&rect);
ここで、rectは無効にする必要がある矩形領域です。InvalidateRect関数を呼び出したとき、システムはウィンドウクラスのウィンドウプロシジャ関数にWM_PAINTメッセージを送り、結果としてOnPaint関数の呼び出しがトリガされ、再描画処理が行われます。注意すべきなのは、InvalidateRect関数はウィンドウ領域を無効とマークするだけで、すぐに再描画処理が行われるわけではなく、システムが空いたときに再描画が行われます。すぐに再描画が必要な場合は、UpdateWindow関数を呼び出すことができます。