WM_SIZE メッセージ

ウィンドウに対し、そのサイズが変更された後に送信されます。

ウィンドウは、WindowProc 関数を介してこのメッセージを受け取ります。

#define WM_SIZE                         0x0005

パラメーター

wParam

要求されたサイズ変更の種類。 このパラメーターには、次の値のいずれかを指定できます。

意味
SIZE_MAXHIDE
4
他のウィンドウが最大化されると、すべてのポップアップ ウィンドウにメッセージが送信されます。
SIZE_MAXIMIZED
2
ウィンドウが最大化されました。
SIZE_MAXSHOW
3
他のウィンドウが以前のサイズに復元されると、すべてのポップアップ ウィンドウにメッセージが送信されます。
SIZE_MINIMIZED
1
ウィンドウが最小化されました。
SIZE_RESTORED
0
ウィンドウのサイズが変更されましたが、SIZE_MINIMIZEDSIZE_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 [デスクトップ アプリのみ]
ヘッダー
Winuser.h (Windows.h を含む)

関連項目

リファレンス

HIWORD

LOWORD

MoveWindow

WM_WINDOWPOSCHANGED

Conceptual

Windows

その他のリソース

SetScrollPos