сообщение 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

Если приложение обрабатывает это сообщение, оно должно возвращать ноль.

Пример

/******************************************************************
*                                                                 *
*  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;

// ...

Пример из классических примеров Windows на GitHub.

Замечания

Если функция SetScrollPos или MoveWindow вызывается для дочернего окна в результате сообщения WM_SIZE, параметр bRedraw или bRepaint должен быть ненулевой, чтобы привести к повторному повтору окна.

Хотя ширина и высота окна имеют 32-разрядные значения, параметр lParam содержит только 16 битов с низким порядком.

Функция DefWindowProc отправляет сообщения WM_SIZE и WM_MOVE при обработке сообщения WM_WINDOWPOSCHANGED. Сообщения WM_SIZE и WM_MOVE не отправляются, если приложение обрабатывает сообщение WM_WINDOWPOSCHANGED без вызова DefWindowProc.

Requirements

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Верхний колонтитул
Winuser.h (включая Windows.h)

См. также

Ссылка

HIWORD

LOWORD

MoveWindow

WM_WINDOWPOSCHANGED

Концептуальной

Windows

Другие ресурсы

SetScrollPos