WM_SIZE メッセージ
ウィンドウに対し、そのサイズが変更された後に送信されます。
ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。
#define WM_SIZE 0x0005
パラメーター
-
wParam
-
要求されたサイズ変更の種類。 このパラメーターには、次の値のいずれかを指定できます。
値 意味 - SIZE_MAXHIDE
- 4
他のウィンドウが最大化されると、すべてのポップアップ ウィンドウにメッセージが送信されます。 - SIZE_MAXIMIZED
- 2
ウィンドウが最大化されました。 - SIZE_MAXSHOW
- 3
他のウィンドウが以前のサイズに復元されると、すべてのポップアップ ウィンドウにメッセージが送信されます。 - SIZE_MINIMIZED
- 1
ウィンドウが最小化されました。 - SIZE_RESTORED
- 0
ウィンドウのサイズが変更されましたが、SIZE_MINIMIZED と SIZE_MAXIMIZED のどちらの値も適用されていません。 -
lParam
-
lParam の下位ワードでは、クライアント領域の新しい幅を指定します。
lParam の上位ワードでは、クライアント領域の新しい高さを指定します。
戻り値
型: LRESULT
アプリケーションでこのメッセージを処理する場合は、0 を返す必要があります。
例
/******************************************************************
* *
* SimpleText::OnResize *
* *
* If the application receives a WM_SIZE message, this method *
* resize the render target appropriately. *
* *
******************************************************************/
void SimpleText::OnResize(UINT width, UINT height)
{
if (pRT_)
{
D2D1_SIZE_U size;
size.width = width;
size.height = height;
pRT_->Resize(size);
}
}
LRESULT CALLBACK SimpleText::WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
SimpleText *pSimpleText = reinterpret_cast<SimpleText *>(
::GetWindowLongPtr(hwnd, GWLP_USERDATA));
if (pSimpleText)
{
switch(message)
{
case WM_SIZE:
{
UINT width = LOWORD(lParam);
UINT height = HIWORD(lParam);
pSimpleText->OnResize(width, height);
}
return 0;
// ...
GitHub 上の Windows クラシック サンプルからの例。
解説
WM_SIZE メッセージの結果として子ウィンドウに対して SetScrollPos または MoveWindow 関数が呼び出された場合、ウィンドウを再描画するには、bRedraw または bRepaint パラメーターをゼロ以外にする必要があります。
ウィンドウの幅と高さは 32 ビットの値ですが、lParam パラメーターにはそれぞれの下位 16 ビットのみが含まれます。
DefWindowProc 関数では、WM_WINDOWPOSCHANGED メッセージを処理するときに、WM_SIZE および WM_MOVE メッセージを送信します。 アプリケーションが DefWindowProc を呼び出さずに WM_WINDOWPOSCHANGED メッセージを処理する場合は、WM_SIZE および WM_MOVE メッセージは送信されません。
要件
要件 | Value |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|
関連項目
-
リファレンス
-
Conceptual
-
その他のリソース