CWnd::RedrawWindow
更新 : 2007 年 11 月
指定されたウィンドウのクライアント領域の指定された四角形または領域を更新します。
BOOL RedrawWindow(
LPCRECT lpRectUpdate = NULL,
CRgn* prgnUpdate = NULL,
UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE
);
パラメータ
lpRectUpdate
更新四角形の座標を持つ RECT 構造体を指します。prgnUpdate が有効な領域ハンドルを持つ場合、このパラメータは無視されます。prgnUpdate
更新領域を識別します。prgnUpdate と lpRectUpdate がともに NULL の場合は、クライアント領域全体が更新領域に追加されます。flags
次のフラグは、ウィンドウを無効にするために使用します。RDW_ERASE ウィンドウが再描画されたとき、WM_ERASEBKGND メッセージをウィンドウに送信します。RDW_INVALIDATE フラグも指定される必要があります。それ以外の場合、RDW_ERASE は無効です。
RDW_FRAME 更新領域と交わるウィンドウの非クライアント領域の任意の部分に WM_NCPAINT メッセージを送信します。RDW_INVALIDATE フラグも指定される必要があります。それ以外の場合、RDW_FRAME は無効です。
RDW_INTERNALPAINT ウィンドウが無効領域を持つかどうかにかかわらず、ウィンドウに WM_PAINT メッセージをポストします。
RDW_INVALIDATE lpRectUpdate または prgnUpdate を無効にします (どちらかが NULL でなくてもかまいません)。両者とも NULL の場合は、ウィンドウ全体が無効になります。
次のフラグは、ウィンドウを有効にするために使います。
RDW_NOERASE 保留状態の WM_ERASEBKGND メッセージの送信を中止します。
RDW_NOFRAME 保留状態の WM_NCPAINT メッセージの送信を中止します。このフラグは RDW_VALIDATE と共に使用する必要があります。通常は RDW_NOCHILDREN と共に使われます。このオプションを使用すると、ウィンドウの一部が正しく描画されない場合もあるため、注意して使用する必要があります。
RDW_NOINTERNALPAINT 保留状態の内部 WM_PAINT メッセージの送信を中止します。このフラグは、無効領域からの WM_PAINT メッセージには影響しません。
RDW_VALIDATE lpRectUpdate または prgnUpdate を有効にします (どちらかが NULL でなくてもかまいません)。両者とも NULL の場合は、ウィンドウ全体が有効になります。このフラグは、内部の WM_PAINT メッセージには影響しません。
次のフラグは、再描画が発生したときに制御を行います。このビットが 1 つも設定されていない場合は、RedrawWindow 関数による描画は実行されません。
RDW_ERASENOW 関数が値を返す前に、必要に応じて、影響を受けたウィンドウ (RDW_ALLCHILDREN フラグおよび RDW_NOCHILDREN フラグが指定) に、WM_NCPAINT メッセージおよび WM_ERASEBKGND メッセージを送信します。WM_PAINT メッセージは遅延されます。
RDW_UPDATENOW 関数が値を返す前に、必要に応じて、影響を受けたウィンドウ (RDW_ALLCHILDREN フラグおよび RDW_NOCHILDREN フラグが指定) に、WM_NCPAINT メッセージ、WM_ERASEBKGND メッセージ、WM_PAINT メッセージを送信します。
RedrawWindow 関数の影響を受けるウィンドウは、既定では、指定されたウィンドウが WS_CLIPCHILDREN スタイルを持っているかどうかに依存します。WS_CLIPCHILDREN を持つウィンドウの子ウィンドウには影響を与えません。しかし、WS_CLIPCHILDREN スタイルを持たないウィンドウは、WS_CLIPCHILDREN を持つウィンドウと出会うまで再帰的に有効または無効になります。次のフラグは、RedrawWindow 関数により影響を受けるウィンドウを制御します。
RDW_ALLCHILDREN 子ウィンドウがあれば、再描画操作に含めます。
RDW_NOCHILDREN 子ウィンドウがあれば、再描画操作から除外します。
戻り値
正常にウィンドウが再描画された場合は、0 以外を返します。それ以外の場合は 0 を返します。
解説
RedrawWindow メンバ関数を使用して、デスクトップ ウィンドウの一部を無効にすると、そのウィンドウに WM_PAINT メッセージは送信されません。デスクトップを再描画するには、アプリケーションで CWnd::ValidateRgn、CWnd::InvalidateRgn、CWnd::UpdateWindow、RedrawWindow のいずれかが使用される必要があります。
必要条件
ヘッダー : afxwin.h