DPI_AWARENESS_CONTEXT句柄

标识窗口的感知上下文。

语法

#define DPI_AWARENESS_CONTEXT_UNAWARE              ((DPI_AWARENESS_CONTEXT)-1)
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE         ((DPI_AWARENESS_CONTEXT)-2)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE    ((DPI_AWARENESS_CONTEXT)-3)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED    ((DPI_AWARENESS_CONTEXT)-5)

常量

DPI_AWARENESS_CONTEXT_UNAWARE

DPI 不知道。 此窗口不缩放 DPI 更改,并且始终假定其比例系数为 100% (96 DPI)。 系统将在任何其他 DPI 设置上自动缩放它。

DPI_AWARENESS_CONTEXT_SYSTEM_AWARE

系统 DPI 感知。 此窗口不会缩放 DPI 更改。 它将查询 DPI 一次,并在进程的生存期内使用该值。 如果 DPI 发生更改,该过程将不会调整为新的 DPI 值。 当 DPI 从系统值发生更改时,系统会自动纵向扩展或缩减它。

DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE

每个监视器 DPI 感知。 此窗口在创建 DPI 时检查 DPI,并在 DPI 发生更改时调整比例因子。 系统不会自动缩放这些进程。

DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2

也称为 Per Monitor v2。 与原始按监视器 DPI 感知模式的提升,使应用程序能够基于每个顶级窗口访问与 DPI 相关的新缩放行为。
每个监视器 v2 在 Windows 10 的创意者更新(也称为版本 1703)中提供,在早期版本的操作系统上不可用。
引入的其他行为如下所示:

  • 子窗口 DPI 更改通知 - 在 Per Monitor v2 上下文中,将通知整个窗口树发生的任何 DPI 更改。
  • 非工作区 的缩放 - 所有窗口将自动以 DPI 敏感方式绘制其非工作区。 不需要调用 EnableNonClientDpiScaling
  • 缩放 Win32 菜单 - 在 Per Monitor v2 上下文中创建的所有 NTUSER 菜单将以按监视器的方式缩放。
  • 对话缩放 - 在 Per Monitor v2 上下文中创建的 Win32 对话将自动响应 DPI 更改。
  • 改进了 comctl32 控件 的缩放 - 各种 comctl32 控件改进了 Per Monitor v2 上下文中的 DPI 缩放行为。
  • 改进了主题设置行为 - 在 Per Monitor v2 窗口的上下文中打开的 UxTheme 句柄将在与该窗口关联的 DPI 方面运行。

DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED

DPI 不知道基于 GDI 的内容的质量。 此模式的行为类似于DPI_AWARENESS_CONTEXT_UNAWARE,但也使系统能够在窗口显示在高 DPI 监视器上时自动提高文本和其他基于 GDI 的基元的呈现质量。

有关详细信息,请参阅 改进基于 GDI 的桌面应用中的高 DPI 体验。

DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED是在 2018 年 10 月 Windows 10 更新(也称为版本 1809)中引入的。

要求

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

另请参阅

AreDpiAwarenessContextsEqual

GetAwarenessFromDpiAwarenessContext

GetDpiFromDpiAwarenessContext

GetThreadDpiAwarenessContext

GetWindowDpiAwarenessContext

IsValidDpiAwarenessContext

SetProcessDpiAwarenessContext

SetThreadDpiAwarenessContext