Сообщений 0    Оценка 16        Оценить  
Система Orphus

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

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

Версия текста: 1.0

Когда пользователь изменяет размеры окна, 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.

Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
    Сообщений 0    Оценка 16        Оценить