共用方式為


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 值。 此值一律是指垂直邊緣,即使螢幕旋轉也一樣。

傳回值

此函式會傳回下列其中一個值。

傳回碼 描述
S_OK
函式成功傳回指定監視器的 X 和 Y DPI 值。
E_INVALIDARG
傳入的控制碼、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_DPIMDT_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

另請參閱

PROCESS_DPI_AWARENESS