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

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

  • 子窗口 DPI 更改通知 - 在 Per Monitor v2 上下文中,将通知整个窗口树发生的任何 DPI 更改。
  • 非工作区的缩放 - 所有窗口将自动以 DPI 敏感方式绘制其非工作区。 不需要调用 EnableNonClientDpiScaling
  • 缩放 Win32 菜单 - 在每监视器 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