WM_NCCALCSIZE сообщение
Отправляется, когда необходимо вычислить размер и положение клиентской области окна. Обрабатывая это сообщение, приложение может управлять содержимым клиентской области окна при изменении размера или положения окна.
Окно получает это сообщение через функцию WindowProc .
#define WM_NCCALCSIZE 0x0083
Параметры
-
wParam
-
Если wParam имеет значение TRUE, оно указывает, что приложение должно указать, какая часть клиентской области содержит допустимые сведения. Система копирует допустимые сведения в указанную область в новой клиентской области.
Если wParam имеет значение FALSE, приложению не нужно указывать допустимую часть клиентской области.
-
lParam
-
Если wParam имеет значение TRUE, lParam указывает на структуру NCCALCSIZE_PARAMS , содержащую сведения, которые приложение может использовать для вычисления нового размера и положения клиентского прямоугольника.
Если wParam имеет значение FALSE, lParam указывает на структуру RECT . При входе структура содержит предлагаемый прямоугольник окна для окна. При выходе структура должна содержать экранные координаты соответствующей клиентской области окна.
Возвращаемое значение
Тип: LRESULT
Если параметр wParam имеет значение FALSE, приложение должно возвращать ноль.
Если wParam имеет значение TRUE, приложение должно возвращать ноль или сочетание следующих значений.
Если wParam имеет значение TRUE , а приложение возвращает ноль, старая клиентская область сохраняется и выравнивается по верхнему левому углу новой клиентской области.
Возвращаемый код/значение | Описание |
---|---|
|
Указывает, что клиентская область окна должна быть сохранена и выровнена по верхней части нового положения окна. Например, чтобы выровнять клиентную область по верхнему левому углу, верните значения WVR_ALIGNTOP и WVR_ALIGNLEFT . |
|
Указывает, что клиентская область окна должна быть сохранена и выровнена по правому краю нового положения окна. Например, чтобы выровнять область клиента по правому нижнему углу, верните значения WVR_ALIGNRIGHT и WVR_ALIGNBOTTOM. |
|
Указывает, что клиентская область окна должна быть сохранена и выровнена по левой стороне нового положения окна. Например, чтобы выровнять область клиента по левому нижнему углу, верните значения WVR_ALIGNLEFT и WVR_ALIGNBOTTOM . |
|
Указывает, что клиентская область окна должна быть сохранена и выровнена по нижней части нового положения окна. Например, чтобы выровнять область клиента по верхнему левому углу, верните значения WVR_ALIGNTOP и WVR_ALIGNLEFT . |
|
Использование в сочетании с любыми другими значениями, кроме WVR_VALIDRECTS, приводит к полному перерисовке окна, если размер клиентского прямоугольника изменяется горизонтально. Это значение похоже на стиль класса CS_HREDRAW |
|
Использование в сочетании с любыми другими значениями, кроме WVR_VALIDRECTS, приводит к полному перерисовке окна, если размер клиентского прямоугольника изменяется вертикально. Это значение похоже на стиль класса CS_VREDRAW |
|
Это значение приводит к перерисовкам всего окна. Это сочетание значений WVR_HREDRAW и WVR_VREDRAW . |
|
Это значение указывает, что при возвращении из WM_NCCALCSIZE прямоугольники, заданные элементами rgrc[1] и rgrc[2] структуры NCCALCSIZE_PARAMS , содержат допустимые прямоугольники назначения и исходной области соответственно. Система объединяет эти прямоугольники для вычисления области сохраняемого окна. Система копирует любую часть изображения окна, которая находится в исходном прямоугольнике, и обрезает изображение в целевой прямоугольник. Оба прямоугольника находятся в родительских или экранных координатах. Этот флаг нельзя сочетать с другими флагами. Это возвращаемое значение позволяет приложению реализовать более сложные стратегии сохранения клиентской области, такие как центрирование или сохранение подмножества клиентской области. |
Комментарии
Окно может быть перерисовывано в зависимости от того, задан ли стиль класса CS_HREDRAW или CS_VREDRAW. Это обработка этого сообщения с обратной совместимостью по умолчанию функцией DefWindowProc (в дополнение к обычному расчету клиентского прямоугольника, описанному в предыдущей таблице).
Если wParam имеет значение TRUE, простое возвращение 0 без обработки NCCALCSIZE_PARAMS прямоугольников приведет к тому, что размер клиентской области изменится до размера окна, включая рамку окна. Это приведет к удалению рамки окна и подпись элементов из окна, оставив только клиентская область.
Начиная с Windows Vista удаление стандартного кадра путем простого возврата 0, если wParam имеет значение TRUE , не влияет на кадры, которые расширяются в клиентской области с помощью функции DwmExtendFrameIntoClientArea . Будет удален только стандартный кадр.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера |
Windows 2000 Server [только классические приложения] |
Заголовок |
|
См. также раздел
-
Справочные материалы
-
Основные понятия
-
Другие ресурсы