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 |