Сообщение WM_NCCALCSIZE


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

Окно получает это сообщение через свою функцию WindowProc.

Синтаксис

WM_NCCALCSIZE
    WPARAM wParam
    LPARAM lParam;

Параметры

wParam

Если параметр wParam - ИСТИНА (TRUE), то он определяет, что прикладная программа должна указать, какая часть рабочей области содержит правильную информацию. Операционная система копирует правильную информацию в заданный район внутри новой рабочей области.

Если этот параметр - ЛОЖЬ(FALSE), прикладная программа не должна указывать допустимую часть рабочей области.

lParam.

Если wParam - ИСТИНА (TRUE), lParam указывает на структуру NCCALCSIZE_PARAMS, содержащую информацию, которую прикладная программа может использовать, чтобы вычислить новый размер и позицию рабочего прямоугольника.

Если wParam - ЛОЖЬ(FALSE), lParam указывает на структуру RECT.

На входе структура содержит предполагаемый прямоугольник окна. На выходе структура должна содержать экранные координаты соответствующей рабочей области окна.

Возвращаемые значения

Если параметр wParam - ЛОЖЬ(FALSE), прикладная программа должна возвратить нуль.

Если wParam - ИСТИНА (TRUE), прикладная программа может возвратить нуль или допустимую комбинацию следующих значений:

 

Значение

Предназначение

WVR_ALIGNTOP

Устанавливает, что рабочая область окна должна быть сохранена и выровнена по верху новой позиции окна. Например, чтобы выровнять рабочую область по левому верхнему углу, возвратите значения WVR_ALIGNTOP и WVR_ALIGNLEFT.

WVR_ALIGNLEFT

Устанавливает, что рабочая область окна должна быть сохранена и выровнена по левой стороне новой позиции окна. Например, чтобы выровнять рабочую область по левому нижнему углу, возвратите значения WVR_ALIGNLEFT и WVR_ALIGNBOTTOM.

WVR_ALIGNBOTTOM

Устанавливает, что рабочая область окна должна быть сохранена и выровнена по низу новой позиции окна. Например, чтобы выровнять рабочую область верхнего левого угла, возвратите значения WVR_ALIGNTOP и WVR_ALIGNLEFT.

WVR_HREDRAW

Используется в комбинации с любыми другими значениями, которые заставляют окно, которое полностью перерисовываться, если рабочий прямоугольник изменяет размер по горизонтали. Это значение похоже на стиль класса CS_HREDRAW.

WVR_VREDRAW

Используется в комбинации с любыми другими значениями, которые заставляют окно полностью перерисовываться, если рабочий прямоугольник изменяет размер по вертикали. Это значение похоже на стиль класса CS_VREDRAW.

WVR_REDRAW

Это значение заставляет перерисовать окно полностью. Это - комбинация значений WVR_HREDRAW и WVR_VREDRAW.

WVR_VALIDRECTS

Это значение указывает, что, при возврате из сообщения WM_NCCALCSIZE, прямоугольники, заданные членами rgrc [1] и rgrc [2] структуры NCCALCSIZE_PARAMS, содержат правильную источниковую и целевую области прямоугольников, соответственно. Система объединяет эти прямоугольники, чтобы вычислить область окна, которую нужно сохранить. Система копирует любую часть изображения окна, которое является внутри исходного прямоугольника и обрезает изображение в прямоугольнике назначения. Оба прямоугольника находятся в координатах - относительно родительского окна или экрана.

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

Замечания

Окно может быть перерисовано, в зависимости от того, установлен ли стиль класса CS_HREDRAW или CS_VREDRAW. Это - значение по умолчанию, обратно совместимая обработка этого сообщения функцией DefWindowProc (в дополнение к обычному вычислению прямоугольника пользователя, описанному в предшествующей таблице).

Смотри также

Краткий обзор Окна, DefWindowProc, MoveWindow, SetWindowPos, NCCALCSIZE_PARAMS, RECT

Размещение и совместимость WM_NCCALCSIZE

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Windows 95

Да

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

 

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

Hosted by uCoz