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 の値。 この値は、画面が回転した場合でも、常に垂直エッジを参照します。
戻り値
この関数は、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
関数は、指定されたモニターの 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_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 |