Как обнаружить окно было развернуто?

Кто-нибудь знает WM_MESSAGE, который отправляется, когда окно развернуто (либо нажатием кнопки «Развернуть» в строке заголовка, либо двойным щелчком в строке заголовка?)

Есть ли сообщение о том, что кнопка максимизации нажата?

Win32 / C ++, спасибо.

2

Решение

Вы получаете WM_SIZE сообщение со значением SIZE_MAXIMIZED в wParam

редактировать

Комментарий @jamesdlin ниже назвал мое внимание к WM_WINDOWPOSCHANGED Документация, в которой говорится (выделено мое):

замечания
По умолчанию функция DefWindowProc отправляет сообщения WM_SIZE и WM_MOVE в окно. Сообщения WM_SIZE и WM_MOVE не отправляются если приложение обрабатывает сообщение WM_WINDOWPOSCHANGED без вызова DefWindowProc. Более эффективно выполнять любое перемещение или изменение размера во время сообщения WM_WINDOWPOSCHANGED без вызова DefWindowProc.

Спасибо, Джеймс!

2

Другие решения

Я имел дело с этим недавно, и подход, на котором я остановился, состоял в том, чтобы проверить IsZoomed в ответ на WM_WINDOWPOSCHANGEDсравнивая его результат с предыдущим, чтобы определить, когда произошел переход, а затем переслать WM_WINDOWPOSCHANGED к процедуре окна по умолчанию.

Если вы полностью контролируете обработку сообщений в своем приложении и знаете, что нет (и никогда не будет) WM_WINDOWPOSCHANGED обработчик, который подавляет WM_MOVE/WM_SIZEтогда вы сможете справиться с этим прямо в WM_SIZE обработчик, как описано в ответ Jachguate.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector