Функция GetDpiForMonitor (shellscalingapi.h)

Запрашивает количество точек на дюйм (точек на дюйм) дисплея.

Синтаксис

HRESULT GetDpiForMonitor(
  [in]  HMONITOR         hmonitor,
  [in]  MONITOR_DPI_TYPE dpiType,
  [out] UINT             *dpiX,
  [out] UINT             *dpiY
);

Параметры

[in] hmonitor

Дескриптор запрашиваемого монитора.

[in] dpiType

Тип запрашиваемого DPI. Возможные значения из перечисления MONITOR_DPI_TYPE .

[out] dpiX

Значение DPI вдоль оси X. Это значение всегда относится к горизонтальному краю, даже если экран поворачивается.

[out] dpiY

Значение DPI вдоль оси Y. Это значение всегда относится к вертикальному краю, даже если экран поворачивается.

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

Эта функция возвращает одно из следующих значений.

Код возврата Описание
S_OK
Функция успешно возвращает значения X и Y DPI для указанного монитора.
E_INVALIDARG
Переданные дескриптор, тип DPI или указатели являются недопустимыми.

Комментарии

Этот API не учитывает DPI и не должен использоваться, если вызывающий поток учитывает DPI для каждого монитора. Версию этого API с поддержкой DPI см. в разделе GetDpiForWindow.

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

PROCESS_DPI_UNAWARE 96, так как приложение не знает о других коэффициентах масштабирования.
PROCESS_SYSTEM_DPI_AWARE Значение , заданное для системного DPI, так как приложение предполагает, что все приложения используют системный DPI.
PROCESS_PER_MONITOR_DPI_AWARE Фактическое значение DPI, заданное пользователем для этого дисплея.
 

Значения *dpiX и *dpiY идентичны. Необходимо записать только одно из значений, чтобы определить DPI и ответить соответствующим образом.

Если MONITOR_DPI_TYPEMDT_ANGULAR_DPI или MDT_RAW_DPI, возвращаемое значение DPI не включает изменения, внесенные пользователем в DPI с помощью ползунка переопределения масштабирования рабочего стола в панель управления.

Дополнительные сведения о параметрах DPI в панель управления см. в техническом документе Написание DPI-Aware классических приложений в Предварительная версия Windows 8.1.

Требования

   
Минимальная версия клиента Windows 8.1 [только классические приложения]
Минимальная версия сервера Windows Server 2012 R2 [только классические приложения]
Целевая платформа Windows
Header shellscalingapi.h
Библиотека Shcore.lib
DLL Shcore.dll

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

PROCESS_DPI_AWARENESS