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 设置上自动缩放它。
DPI_AWARENESS_SYSTEM_AWARE
值:1
系统 DPI 感知。 此过程不会缩放 DPI 更改。 它将查询 DPI 一次,并在进程的生存期内使用该值。 如果 DPI 更改,则进程不会调整为新的 DPI 值。 当 DPI 从系统值更改时,系统会自动纵向扩展或缩减它。
DPI_AWARENESS_PER_MONITOR_AWARE
值: 2
每个监视器的 DPI 感知。 此过程在创建 DPI 时检查 DPI,并在 DPI 更改时调整比例因子。 系统不会自动缩放这些进程。

注解

在早期版本的 Windows 中,DPI 值仅为整个应用程序设置一次。 对于这些应用, PROCESS_DPI_AWARENESS 类型确定了整个应用程序的 DPI 感知类型。 目前,DPI 感知在单个线程、窗口或进程级别上定义,并由 DPI_AWARENESS 类型指示。 虽然焦点从进程级别转移到线程级别,但不同类型的 DPI 感知是相同的:无感知、系统感知和每个监视器感知。 有关不同 DPI 类型的详细说明和一些示例,请参阅 PROCESS_DPI_AWARENESS

旧建议是使用设置 dpiAware 在应用程序清单中定义 DPI 感知级别,如 PROCESS_DPI_AWARENESS 中所述。 现在,DPI 感知已绑定到线程和窗口,而不是整个应用程序,新的窗口设置将添加到应用清单。 此设置为 dpiAwareness ,如果清单中存在任何 dpiAware 设置,则此设置将替代这些设置。 虽然仍建议使用清单,但现在可以使用 SetThreadDpiAwarenessContext 在应用运行时更改 DPI 感知。

请务必注意,如果应用程序具有 DPI_AWARENESS_PER_MONITOR_AWARE 窗口,则负责通过响应 WM_DPICHANGED 消息来跟踪 DPI。

示例

此代码片段演示如何在应用程序清单中将 值设置为 DPI_AWARENESS_SYSTEM_AWARE

<dpiAwareness>System</dpiAwareness>

此代码片段演示如何在应用程序清单中将 值设置为 DPI_AWARENESS_PER_MONITOR_AWARE

<dpiAwareness>PerMonitor</dpiAwareness>

要求

要求
最低受支持的客户端 Windows 10 [仅限桌面应用]
最低受支持的服务器 无受支持的版本
标头 windef.h

另请参阅

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext