WM_SETREDRAW メッセージ

WM_SETREDRAW メッセージをウィンドウに送信すると、そのウィンドウの変更を再描画したり、そのウィンドウの変更が再描画されないようにしたりできます。

このメッセージを送信するには、次のパラメーターを指定して SendMessage 関数を呼び出します。

SendMessage(
  (HWND) hWnd,
  WM_SETREDRAW,
  (WPARAM) wParam,
  (LPARAM) lParam
);

パラメーター

wParam

再描画の状態。 このパラメーターが TRUE の場合は、変更後にコンテンツを再描画できます。 このパラメーターが FALSE の場合、変更後にコンテンツを再描画することはできません。

lParam

このパラメーターは使用されません。

戻り値

このメッセージを処理する場合、アプリケーションは 0 を返す必要があります。

解説

このメッセージは、アプリケーションでリスト ボックスに複数の項目を追加する必要がある場合に便利です。 アプリケーションでは、 wParam をFALSE に設定してこのメッセージを呼び出し、項目を追加してから、 wParamTRUE に設定してメッセージを再度呼び出すことができます。 最後に、アプリケーションで RedrawWindow(hWnd, NULL, NULL, RDW_ERASE |RDW_FRAME |RDW_INVALIDATE |RDW_ALLCHILDREN) をクリックすると、リスト ボックスが再描画されます。

Note

RedrawWindowInvalidateRect ではなく、指定したフラグと共に使用する必要があります。これは、前者が独自の非クライアント領域を持つコントロールや、非クライアント領域 (WS_THICKFRAMEWS_BORDERWS_EX_CLIENTEDGEなど) を指定するウィンドウ スタイルを持つコントロールに必要であるためです。 コントロールに非クライアント領域がない場合、これらのフラグを持つ RedrawWindowInvalidateRect と同じだけ無効になります。

WM_SETREDRAW メッセージを DefWindowProc 関数に渡すと、wParamFALSE に設定されている場合、ウィンドウからWS_VISIBLE スタイルが削除されます。 ウィンドウの内容は画面に表示されたままですが、 IsWindowVisible 関数は、この状態のウィンドウで呼び出されると FALSE を 返します。

WM_SETREDRAW メッセージを DefWindowProc 関数に渡すと、wParamTRUE に設定されている場合、WS_VISIBLE スタイルがウィンドウに追加されます (設定されていない場合)。 wParamTRUE に設定されたWM_SETREDRAW メッセージを非表示のウィンドウに送信すると、ウィンドウが表示されます。

Windows 10以降。Windows Server 2016 以降。 システムは、ウィンドウ プロシージャがメッセージを DefWindowProc に渡すウィンドウに SysSetRedraw という名前のプロパティWM_SETREDRAW設定します。 GetProp 関数を使用すると、使用可能な場合にプロパティ値を取得できます。 再描画が無効になっている場合、GetProp は 0 以外の値を返します。 再描画が有効になっている場合、またはウィンドウ プロパティが存在しない場合、GetProp は 0 を返します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windows.h を含む)

関連項目