Оценка 16 Оценить ![]() ![]() ![]() ![]() ![]() ![]()
|
Когда пользователь изменяет размеры окна, 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. |
Оценка 16 Оценить ![]() ![]() ![]() ![]() ![]() ![]()
|