GetDpiForMonitor 関数 (shellscalingapi.h)

ディスプレイの 1 インチあたりのドット数 (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_TYPEがMDT_ANGULAR_DPIまたはMDT_RAW_DPIされている場合、返される DPI 値には、ユーザーが コントロール パネル のデスクトップ スケーリング オーバーライド スライダー コントロールを使用して DPI に加えた変更は含まれません。

コントロール パネルの DPI 設定の詳細については、ホワイト ペーパーの「デスクトップ アプリケーションの作成 DPI-Aware Windows 8.1 Preview参照してください。

要件

   
サポートされている最小のクライアント Windows 8.1 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shellscalingapi.h
Library Shcore.lib
[DLL] Shcore.dll

関連項目

PROCESS_DPI_AWARENESS