Часто задаваемые вопросы и ответы по C/C++/Visual C++
Последнее обновление: 27.08.2003
FAQ по C/C++/Visual C++
Работа с сетью
Как задать минимальный и максимальный размер окна
Составители: SUnteXx, Leprecon
Как задать минимальный и максимальный размер окна
A: (Alfa)
Оригинальная ссылка: нету

Когда изменяются размеры окна, Windows запрашивает у программы
минимальный и максимальный размеры, посылая сообщение WM_GETMINMAXINFO.
WM_GETMINMAXINFO 
lpmmi = (LPMINMAXINFO) lParam; // адрес структуры 
При этом в параметре lParam размещается указатель на структуру
MINMAXINFO, в которую и следует записать нужные значения.

Пример для WinAPI:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) 
    {
        //  ...
        case WM_GETMINMAXINFO: //Получили сообщение от Винды
        {
            MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
            POINT Min = { 50, 50 };
            POINT  Max = {100, 100 };
            pInfo->ptMinTrackSize = Min; // Установили минимальный размер
            pInfo->ptMaxTrackSize = Max; // Установили максимальный размер
            return 0;
        }

        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
    }
}
Пример для MFC:
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
    lpMMI->ptMinTrackSize = CPoint(50, 50); // Установили минимальный размер
    lpMMI->ptMaxTrackSize = CPoint(100, 100); // Установили максимальный размер
  
    CFrameWnd::OnGetMinMaxInfo(lpMMI);
}

Содержание Обсудить на форуме « Предыдущая статья | Следующая статья »
Перейти к FAQ:  
FAQ составлен по материалам Форума на Исходниках.Ру.
Copyright © 2002 by Sources.ru. All rights reserved.