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

Когда изменяются размеры окна, 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);
}
 
« Предыдущая статья   Следующая статья »