WM_SETREDRAW メッセージ
WM_SETREDRAW メッセージをウィンドウに送信すると、そのウィンドウの変更を再描画したり、そのウィンドウの変更が再描画されないようにしたりできます。
このメッセージを送信するには、次のパラメーターを指定して SendMessage 関数を呼び出します。
SendMessage(
(HWND) hWnd,
WM_SETREDRAW,
(WPARAM) wParam,
(LPARAM) lParam
);
パラメーター
wParam
再描画の状態。 このパラメーターが TRUE の場合は、変更後にコンテンツを再描画できます。 このパラメーターが FALSE の場合、変更後にコンテンツを再描画することはできません。
lParam
このパラメーターは使用されません。
戻り値
このメッセージを処理する場合、アプリケーションは 0 を返す必要があります。
解説
このメッセージは、アプリケーションでリスト ボックスに複数の項目を追加する必要がある場合に便利です。 アプリケーションでは、 wParam をFALSE に設定してこのメッセージを呼び出し、項目を追加してから、 wParam を TRUE に設定してメッセージを再度呼び出すことができます。 最後に、アプリケーションで RedrawWindow(hWnd, NULL, NULL, RDW_ERASE |RDW_FRAME |RDW_INVALIDATE |RDW_ALLCHILDREN) をクリックすると、リスト ボックスが再描画されます。
Note
RedrawWindow は InvalidateRect ではなく、指定したフラグと共に使用する必要があります。これは、前者が独自の非クライアント領域を持つコントロールや、非クライアント領域 (WS_THICKFRAME、WS_BORDER、WS_EX_CLIENTEDGEなど) を指定するウィンドウ スタイルを持つコントロールに必要であるためです。 コントロールに非クライアント領域がない場合、これらのフラグを持つ RedrawWindow は InvalidateRect と同じだけ無効になります。
WM_SETREDRAW メッセージを DefWindowProc 関数に渡すと、wParam が FALSE に設定されている場合、ウィンドウからWS_VISIBLE スタイルが削除されます。 ウィンドウの内容は画面に表示されたままですが、 IsWindowVisible 関数は、この状態のウィンドウで呼び出されると FALSE を 返します。
WM_SETREDRAW メッセージを DefWindowProc 関数に渡すと、wParam が TRUE に設定されている場合、WS_VISIBLE スタイルがウィンドウに追加されます (設定されていない場合)。 wParam が TRUE に設定されたWM_SETREDRAW メッセージを非表示のウィンドウに送信すると、ウィンドウが表示されます。
Windows 10以降。Windows Server 2016 以降。 システムは、ウィンドウ プロシージャがメッセージを DefWindowProc に渡すウィンドウに SysSetRedraw という名前のプロパティWM_SETREDRAW設定します。 GetProp 関数を使用すると、使用可能な場合にプロパティ値を取得できます。 再描画が無効になっている場合、GetProp は 0 以外の値を返します。 再描画が有効になっている場合、またはウィンドウ プロパティが存在しない場合、GetProp は 0 を返します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|