сообщение WM_GETDPISCALEDSIZE

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

Это сообщение отправляется в окна верхнего уровня с DPI_AWARENESS_CONTEXT per Monitor версии 2 перед отправкой сообщения WM_DPICHANGED и позволяет окне вычислить требуемый размер ожидающего изменения DPI. Так как линейное масштабирование DPI является поведением по умолчанию, это полезно только в сценариях, когда окно хочет масштабироваться нелинейно. Если приложение отвечает на это сообщение, результирующий размер будет кандидатом прямоугольника, отправленного в WM_DPICHANGED.

Используйте это сообщение для изменения размера прямоугольника, предоставленного WM_DPICHANGED.

#define WM_GETDPISCALEDSIZE       0x02E4

Параметры

wParam

WPARAM содержит значение DPI. Масштабируемый размер окна, заданный приложением, должен быть вычислен, как если бы окно переключилось на этот DPI.

lParam

LPARAM — это указатель на структуру SIZE. Значение _In_ в LPARAM — это ожидающий размер окна после перемещения, инициированного пользователем, или вызова SetWindowPos. Если окно изменяется, этот размер не обязательно совпадает с текущим размером окна во время получения сообщения.

Значение _Out_ в LPARAM должно быть записано приложением, чтобы указать требуемый масштабируемый размер окна, соответствующий указанному значению DPI в WPARAM.

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

Функция возвращает boOL. Возвращая значение TRUE, указывает, что вычислен новый размер. Возвращая значение FALSE, указывает, что сообщение не будет обработано, а масштабирование линейного DPI по умолчанию будет применяться к окну.

Замечания

Это сообщение отправляется только в окна верхнего уровня с контекстом осведомленности о DPI для per Monitor версии 2.

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

В DefWindowProc нет конкретной обработки этого сообщения по умолчанию. Что касается всех сообщений, которые он не обрабатывает явно, DefWindowProc возвращает ноль для этого сообщения. Как отмечалось выше, этот возврат сообщает системе использовать линейное поведение по умолчанию.

Requirements

Требование Значение
Минимальная версия клиента
Windows 10 версии 1703 [только классические приложения]
Минимальная версия сервера
Windows Server 2016 [только классические приложения]
Верхний колонтитул
Winuser.h