enableNonClientDpiScaling 函数 (winuser.h)

在高 DPI 显示器中,启用指定顶级窗口的非工作区部分的自动显示缩放。 必须在初始化该窗口期间调用。

注意 默认情况下,以 DPI_AWARENESS_CONTEXTDPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 运行的应用程序会自动缩放其非工作区。 他们不需要调用此函数。

 

语法

BOOL EnableNonClientDpiScaling(
  [in] HWND hwnd
);

参数

[in] hwnd

应启用自动缩放的窗口。

返回值

如果该函数成功,则返回值为非零值。 如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

调用此函数将为具有DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE DPI_AWARENESS_CONTEXT的单个顶级窗口启用非客户端缩放。 如果不使用按窗口感知,并且整个进程在 DPI_AWARENESS_PER_MONITOR_AWARE 模式下运行,则调用此函数将在进程中的顶级窗口中启用非客户端缩放。

如果这两个都不是 true,或者从任何其他窗口调用此方法,则此方法将失败并返回零值。

默认情况下,不启用顶级窗口的非客户端缩放。 必须调用此 API,以便为每个希望自动缩放非工作区的顶级窗口启用它。 执行此操作后,无法禁用它。 启用非客户端缩放意味着系统为窗口绘制的所有区域将自动缩放,以响应窗口上的 DPI 更改。 这包括描述文字栏、滚动条和菜单栏等区域。 如果希望操作系统负责根据监视器的 DPI 以正确的大小自动呈现这些区域,则希望调用 EnableNonClientDpiScaling

调用此函数仅对顶级窗口启用非客户端缩放。 子窗口不受影响。

在初始化新窗口期间,必须从 WM_NCCREATE 调用此函数。 示例调用可能如下所示:

case WM_NCCREATE:
{
    EnableNonClientDpiScaling(hwnd);
    return (DefWindowProc(hwnd, message, wParam, lParam));
}

要求

要求
最低受支持的客户端 Windows 10版本 1607 [仅限桌面应用]
最低受支持的服务器 Windows Server 2016 [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll