WM_GETMINMAXINFO, похоже, не работает.Как получить минимальный и максимально возможный размер окна? - PullRequest
0 голосов
/ 09 ноября 2010

Я использую MFC.У меня есть настраиваемое диалоговое окно, которое было создано из файла ресурсов приложения (разработанного с помощью конструктора диалогов Visual Studio 6), и мне нужно получить из него информацию о минимуме / максимуме.Я делаю следующее:

MINMAXINFO minMaxInfo;
LRESULT lresult = m_wnd->SendMessage(WM_GETMINMAXINFO, 0, (LPARAM)&minMaxInfo);

Значение lresult равно 0, что означает, что сообщение было обработано приложением.Однако структура minMaxInfo не заполнена значимыми значениями.

Есть ли в приведенном выше коде ошибка?Есть ли другой способ получить минимальную / максимальную информацию из диалогового окна?

Я не хочу обрабатывать сообщение MINMAXINFO самостоятельно.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2010

Если вы посмотрите документацию Microsoft для WM_GETMINMAXINFO , вы увидите, что Windows инициализирует структуру со значениями по умолчанию перед отправкой сообщения. Обработчик сообщения по умолчанию оставит эти значения без изменений; Я предполагаю, что вы никогда не инициализировали эти значения сами, и поэтому вы не видите значимых значений.

Вполне возможно, что сообщение не делает то, что вы думаете, и не будет полезно в любом случае. Когда у меня появляется диалоговое окно с изменяемым размером, я помещаю GetWindowRect в свой OnInitDialog и сохраняю его как минимальный размер окна. Я никогда не чувствовал необходимости ограничивать максимальный размер.

0 голосов
/ 09 ноября 2010

По данным MSDN:

"Отправляется в окно, когда размер или позиция окна собирается измениться. Приложение может использовать это сообщение, чтобы переопределить максимальный размер и позицию окна по умолчанию, или его минимальный или максимальный размер отслеживания по умолчанию."

Ergo, поскольку он не проходит переразмер, информации там нет.

РЕДАКТИРОВАТЬ: http://msdn.microsoft.com/en-us/library/ms632626(VS.85).aspx

...