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 的 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_TYPEMDT_ANGULAR_DPI或MDT_RAW_DPI時,傳回的 DPI 值不會包含使用者在 主控台 中使用桌面調整覆寫滑杆控制項對 DPI 所做的任何變更。
如需 主控台 中 DPI 設定的詳細資訊,請參閱在Windows 8.1 Preview白皮書中撰寫 DPI-Aware 傳統型應用程式。
規格需求
最低支援的用戶端 | Windows 8.1 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2012 R2 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | shellscalingapi.h |
程式庫 | Shcore.lib |
Dll | Shcore.dll |