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

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

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

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

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

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz