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

1 つ以上の再描画フラグ。 このパラメーターを使用すると、ウィンドウの無効化または検証、再描画の制御、 RedrawWindow の影響を受けるウィンドウの制御を行うことができます。

ウィンドウを無効にするには、次のフラグを使用します。

フラグ (無効化) 説明
RDW_ERASE
ウィンドウが再描画されたときに、 ウィンドウにWM_ERASEBKGND メッセージが表示されます。 RDW_INVALIDATE フラグも指定する必要があります。それ以外の場合、RDW_ERASEは効果がありません。
RDW_FRAME
更新領域と交差するウィンドウの非クライアント領域の任意の部分が 、WM_NCPAINT メッセージを受信します。 RDW_INVALIDATE フラグも指定する必要があります。それ以外の場合、RDW_FRAMEは効果がありません。 WM_NCPAINT メッセージは、通常、RedrawWindow の実行中に送信されません。ただし、RDW_UPDATENOWまたはRDW_ERASENOWが指定されている場合を除きます。
RDW_INTERNALPAINT
ウィンドウの一部が無効かどうかに関係なく、 WM_PAINT メッセージをウィンドウにポストします。
RDW_INVALIDATE
lprcUpdate または hrgnUpdate を無効にします (NULL 以外の場合は 1 つだけです)。 両方が NULL の場合、ウィンドウ全体が無効になります。
 

ウィンドウの検証には、次のフラグが使用されます。

フラグ (検証) 説明
RDW_NOERASE
保留中の WM_ERASEBKGND メッセージを抑制します。
RDW_NOFRAME
保留中の WM_NCPAINT メッセージを抑制します。 このフラグは、RDW_VALIDATEで使用する必要があり、通常は RDW_NOCHILDREN で使用されます。 RDW_NOFRAMEは、ウィンドウの一部が不適切に塗られる可能性があるため、注意して使用する必要があります。
RDW_NOINTERNALPAINT
保留中の内部 WM_PAINT メッセージを抑制します。 このフラグは、NULL 以外更新領域WM_PAINT結果のメッセージには影響しません。
RDW_VALIDATE
lprcUpdate または hrgnUpdate を検証します (NULL 以外の場合は 1 つだけです)。 両方が NULL の場合、ウィンドウ全体が検証されます。 このフラグは、内部 WM_PAINT メッセージには影響しません。
 

次のフラグは、再描画が行われるときに制御されます。 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メッセージが表示されません。 デスクトップを再描画するために、アプリケーションは RDW_ERASE フラグを使用して WM_ERASEBKGND メッセージを生成します。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-draw-l1-1-0 (Windows 8 で導入)

関連項目

GetUpdateRect

GetUpdateRgn

InvalidateRect

InvalidateRgn

描画関数と描画関数

描画と描画の概要

Rect

UpdateWindow