Поделиться через


перечисление DPI_AWARENESS (windef.h)

Определяет параметр точек на дюйм (dpi) для потока, процесса или окна.

Синтаксис

typedef enum DPI_AWARENESS {
  DPI_AWARENESS_INVALID = -1,
  DPI_AWARENESS_UNAWARE = 0,
  DPI_AWARENESS_SYSTEM_AWARE = 1,
  DPI_AWARENESS_PER_MONITOR_AWARE = 2
} ;

Константы

 
DPI_AWARENESS_INVALID
Значение: -1
Недопустимая осведомленность о DPI. Это недопустимое значение осведомленности о DPI.
DPI_AWARENESS_UNAWARE
Значение: 0
DPI не знает. Этот процесс не масштабируется при изменении DPI и всегда предполагается, что коэффициент масштабирования составляет 100 % (96 точек на дюйм). Он будет автоматически масштабирован системой при любом другом параметре DPI.
DPI_AWARENESS_SYSTEM_AWARE
Значение: 1
Учитывается системное разрешение. Этот процесс не масштабируется для изменения DPI. Он будет запрашивать DPI один раз и использовать это значение в течение времени существования процесса. Если значение DPI изменится, процесс не будет адаптироваться к новому значению DPI. Он будет автоматически масштабироваться системой при изменении значения DPI по сравнению с системным значением.
DPI_AWARENESS_PER_MONITOR_AWARE
Значение: 2
Для каждого монитора учитывается DPI. Этот процесс проверяет наличие DPI при его создании и корректирует коэффициент масштабирования при каждом изменении DPI. Эти процессы не масштабируются системой автоматически.

Комментарии

В предыдущих версиях Windows значения DPI устанавливались только один раз для всего приложения. Для этих приложений тип PROCESS_DPI_AWARENESS определяет тип осведомленности о DPI для всего приложения. В настоящее время осведомленность о DPI определяется на уровне отдельного потока, окна или процесса и обозначается типом DPI_AWARENESS . Хотя фокус переместился с уровня процесса на уровень потока, различные типы осведомленности о DPI одинаковы: неосведомленный, системный и на монитор. Подробные описания и некоторые примеры различных типов DPI см. в разделе PROCESS_DPI_AWARENESS.

Старая рекомендация заключалась в определении уровня осведомленности о DPI в манифесте приложения с помощью параметра dpiAware , как описано в PROCESS_DPI_AWARENESS. Теперь, когда осведомленность о DPI привязана к потокам и окнам, а не ко всему приложению, в манифест приложения добавляется новый параметр windows. Этот параметр имеет значение dpiAwareness и переопределяет любой параметр dpiAware , если оба параметра присутствуют в манифесте. Хотя по-прежнему рекомендуется использовать манифест, теперь вы можете изменить сведения о DPI во время работы приложения с помощью SetThreadDpiAwarenessContext.

Важно отметить, что если в приложении есть окно DPI_AWARENESS_PER_MONITOR_AWARE , вы отвечаете за отслеживание DPI, отвечая на WM_DPICHANGED сообщения.

Примеры

В этом фрагменте кода показано, как задать значение DPI_AWARENESS_SYSTEM_AWARE в манифесте приложения.

<dpiAwareness>System</dpiAwareness>

В этом фрагменте кода показано, как задать значение DPI_AWARENESS_PER_MONITOR_AWARE в манифесте приложения.

<dpiAwareness>PerMonitor</dpiAwareness>

Требования

Требование Значение
Минимальная версия клиента Windows 10 [только классические приложения]
Минимальная версия сервера Ни одна версия не поддерживается
Верхняя часть windef.h

См. также раздел

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext