::Главная страница :: С++/Си :: Статьи

Как задать минимальный и максимальный размер окна?

Автор: Александр Шаргин

Когда пользователь изменяет размеры окна, Windows сама запрашивает у программы минимальный и максимальный размеры, посылая окну сообщение WM_GETMINMAXINFO. При этом впараметре lParam размещается указатель на структуру MINMAXINFO, в которую и следует записать нужные значения. Затем нужно вернуть 0. Рассмотрим пример обработки сообщения WM_GETMINMAXINFO, при котором размер окна не может быть сделан меньше (100x100) и больше (300x300).


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        ...
        case WM_GETMINMAXINFO:
        {
            MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
            POINT ptMin = { 100, 100 }, ptMax = { 300, 300 };
            pInfo->ptMinTrackSize = ptMin;
            pInfo->ptMaxTrackSize = ptMax;
            return 0;
        }
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
   }
}

В MFC обработчик выглядит аналогичным образом, например:

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
    lpMMI->ptMinTrackSize = CPoint(100, 100);
    lpMMI->ptMaxTrackSize = CPoint(300, 300);

    CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
ПРИМЕЧАНИЕ
Для добавления этого обработчика можно использовать ClassWizard. Если оно не появляется в списке Messages, перейдите на вкладку Class Info и установите Message filter: Window.
Тематические ссылки
Ваша ссылка Ваша ссылка

Обмен кнопками, ведение статистики, реклама.