Кто-нибудь знает WM_MESSAGE, который отправляется, когда окно развернуто (либо нажатием кнопки «Развернуть» в строке заголовка, либо двойным щелчком в строке заголовка?)
Есть ли сообщение о том, что кнопка максимизации нажата?
Win32 / C ++, спасибо.
Вы получаете WM_SIZE сообщение со значением SIZE_MAXIMIZED в wParam
редактировать
Комментарий @jamesdlin ниже назвал мое внимание к WM_WINDOWPOSCHANGED Документация, в которой говорится (выделено мое):
замечания
По умолчанию функция DefWindowProc отправляет сообщения WM_SIZE и WM_MOVE в окно. Сообщения WM_SIZE и WM_MOVE не отправляются если приложение обрабатывает сообщение WM_WINDOWPOSCHANGED без вызова DefWindowProc. Более эффективно выполнять любое перемещение или изменение размера во время сообщения WM_WINDOWPOSCHANGED без вызова DefWindowProc.
Спасибо, Джеймс!
Я имел дело с этим недавно, и подход, на котором я остановился, состоял в том, чтобы проверить IsZoomed
в ответ на WM_WINDOWPOSCHANGED
сравнивая его результат с предыдущим, чтобы определить, когда произошел переход, а затем переслать WM_WINDOWPOSCHANGED
к процедуре окна по умолчанию.
Если вы полностью контролируете обработку сообщений в своем приложении и знаете, что нет (и никогда не будет) WM_WINDOWPOSCHANGED
обработчик, который подавляет WM_MOVE
/WM_SIZE
тогда вы сможете справиться с этим прямо в WM_SIZE
обработчик, как описано в ответ Jachguate.