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


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

Задает уровень осведомленности о DPI по умолчанию процесса. Это эквивалентно вызову Метода SetProcessDpiAwarenessContext с соответствующим значением DPI_AWARENESS_CONTEXT .

Примечание

Рекомендуется задавать уровень осведомленности о DPI по умолчанию процесса с помощью манифеста приложения, а не вызова API. Дополнительные сведения см. в разделе Настройка сведений о DPI по умолчанию для процесса . Настройка определения DPI по умолчанию процесса с помощью вызова API может привести к непредвиденному поведению приложения.

Синтаксис

HRESULT SetProcessDpiAwareness(
  [in] PROCESS_DPI_AWARENESS value
);

Параметры

[in] value

Задаваемое значение осведомленности о DPI. Возможные значения из перечисления PROCESS_DPI_AWARENESS .

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

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

Код возврата Описание
S_OK
Осведомленность о DPI для приложения успешно настроена.
E_INVALIDARG
Переданное значение является недопустимым.
E_ACCESSDENIED
Осведомленность о DPI уже задана путем вызова этого API ранее или с помощью манифеста приложения (.exe).

Комментарии

В предыдущих версиях Windows для всего приложения было только одно значение DPI. Для этих приложений рекомендуется задать значение осведомленности о DPI в манифесте, как описано в PROCESS_DPI_AWARENESS. В соответствии с этой рекомендацией вы не должны были использовать SetProcessDpiAwareness для обновления осведомленности о DPI. На самом деле последующие вызовы этого API завершатся ошибкой после того, как один раз будет задано значение DPI. Теперь, когда осведомленность о DPI привязана к потоку, а не к приложению, этот метод можно использовать для обновления осведомленности о DPI. Однако вместо этого рекомендуется использовать SetThreadDpiAwarenessContext .

Важно  

Для старых приложений настоятельно не рекомендуется использовать SetProcessDpiAwareness , чтобы задать уровень осведомленности о DPI для приложения. Вместо этого следует объявить осведомленность о DPI для приложения в манифесте приложения. Дополнительные сведения о значениях осведомленности о DPI и их настройке в манифесте см. в PROCESS_DPI_AWARENESS .

 
Необходимо вызвать этот API перед вызовом любых API, которые зависят от осведомленности о dpi. Это одна из причин, по которой рекомендуется использовать манифест приложения, а не API SetProcessDpiAwareness . После настройки осведомленности об API для приложения все последующие вызовы этого API будут завершатся ошибкой. Это верно независимо от того, задали ли вы осведомленность о DPI в манифесте или с помощью этого API.

Если уровень осведомленности о DPI не задан, значение по умолчанию — PROCESS_DPI_UNAWARE.

Требования

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

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

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext

Настройка осведомленности о DPI по умолчанию для процесса