Win32 API. Окна - Сообщения о размере и позиции

ОГЛАВЛЕНИЕ

 

Сообщения о размере и позиции

Windows посылает сообщение WM_GETMINMAXINFO окну, чей размер или позиция должны измениться. Например, сообщение посылается, когда пользователь выбирает из меню окна команду Переместить (Move) или Размер (Size) или щелкает мышью по рамке установки размеров окна или по строке заголовка; сообщение посылается также тогда, когда прикладная программа вызывает функцию SetWindowPos, чтобы переместить или установить величину окна. Сообщение WM_GETMINMAXINFO включает в себя указатель на структуру MINMAXINFO, содержащую по умолчанию развернутый размер и позицию для окна, а также заданные по умолчанию минимальный и максимальный устанавливаемые размеры. Прикладная программа может отменять значения по умолчанию, обрабатывая WM_GETMINMAXINFO и устанавливая соответствующие элементы MINMAXINFO. Чтобы принять WM_GETMINMAXINFO, окно должно иметь стиль WS_THICKFRAME или WS_CAPTION. Окно со стилем WS_THICKFRAME принимает это сообщение в ходе процесса создания окна, а также тогда, когда оно передвигается или устанавливается по размеру.

Windows посылает сообщение WM_WINDOWPOSCHANGING окну, чей размер, позиция, позиция в Z-последовательности или состояние показа собирается измениться. Это сообщение включает в себя указатель на структуру WINDOWPOS, которая определяет новый размер окна, позицию, позицию в Z-последовательности и состояние показа. Устанавливая элементы WINDOWPOS, прикладная программа может воздействовать на новый размер, позицию и вид окна.

После изменения размера окна, позиции, позиции в Z-последовательности или состояния показа, Windows посылает окну сообщение WM_WINDOWPOSCHANGED. Это сообщение включает в себя указатель на WINDOWPOS, который сообщает окну о его новых размерах, позиции, позиции в Z-последовательности и состоянии показа. Установка элементов структуры WINDOWPOS, которая передана вместе с WM_WINDOWPOSCHANGED, не влияет на окно. Окно, которое должно обработать сообщения WM_SIZE и WM_MOVE, должно передать WM_WINDOWPOSCHANGED в функцию DefWindowProc; иначе, Windows не посылает сообщения WM_SIZE и WM_MOVE в окно.

Windows посылает сообщение WM_NCCALCSIZE окну, когда окно создано или установлено по размеру. Windows использует это сообщение, чтобы вычислить размер рабочей области окна и позиции рабочей области относительно верхнего левого угла окна. Окно обычно передает это сообщение в заданную по умолчанию оконную процедуру; однако, это сообщение может быть полезно в прикладных программах, которые настраивают нерабочую область окна или сохраняют части рабочей области, когда окно устанавливается по размеру. Для получения дополнительной информации о размере окна, см. статью Закрашивание и Рисование.