getDpiForMonitor 函数 (shellscalingapi.h)
查询显示器的每英寸点数 (dpi) 。
语法
HRESULT GetDpiForMonitor(
[in] HMONITOR hmonitor,
[in] MONITOR_DPI_TYPE dpiType,
[out] UINT *dpiX,
[out] UINT *dpiY
);
参数
[in] hmonitor
正在查询的监视器的句柄。
[in] dpiType
正在查询的 DPI 的类型。 可能的值来自 MONITOR_DPI_TYPE 枚举。
[out] dpiX
沿 X 轴的 DPI 值。 此值始终引用水平边缘,即使在屏幕旋转时也是如此。
[out] dpiY
沿 Y 轴的 DPI 值。 此值始终引用垂直边缘,即使在旋转屏幕时也是如此。
返回值
此函数返回以下值之一。
返回代码 | 说明 |
---|---|
|
函数成功返回指定监视器的 X 和 Y DPI 值。 |
|
传入的句柄、DPI 类型或指针无效。 |
注解
此 API 不感知 DPI,如果调用线程按监视器感知 DPI,则不应使用此 API。 有关此 API 的 DPI 感知版本,请参阅 GetDpiForWindow。
调用 GetDpiForMonitor 时,将接收不同的 DPI 值,具体取决于调用应用程序的 DPI 感知。 DPI 感知是应用程序级属性,通常在应用程序清单中定义。 有关 DPI 感知值的详细信息,请参阅 PROCESS_DPI_AWARENESS。 下表根据应用程序的 PROCESS_DPI_AWARENESS 值指示了结果有何不同。
PROCESS_DPI_UNAWARE | 96,因为应用不知道任何其他缩放因素。 |
PROCESS_SYSTEM_DPI_AWARE | 一个设置为系统 DPI 的值,因为应用假定所有应用程序都使用系统 DPI。 |
PROCESS_PER_MONITOR_DPI_AWARE | 用户为该显示器设置的实际 DPI 值。 |
*dpiX 和 *dpiY 的值相同。 只需记录其中一个值即可确定 DPI 并做出适当的响应。
当MONITOR_DPI_TYPE MDT_ANGULAR_DPI或MDT_RAW_DPI时,返回的 DPI 值不包括用户在 控制面板 中使用桌面缩放替代滑块控件对 DPI 所做的任何更改。
有关 控制面板 中的 DPI 设置的详细信息,请参阅在Windows 8.1 预览版编写 DPI-Aware 桌面应用程序白皮书。
要求
最低受支持的客户端 | Windows 8.1 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | shellscalingapi.h |
Library | Shcore.lib |
DLL | Shcore.dll |