> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PC 上で高 DPI ディスプレイをサポートする

> アセンブリ マニフェストを使って PC タイトルで Per-Monitor V2 DPI 対応を有効にし、高 DPI Windows ディスプレイでレンダリングとマウス入力が正しく動作するようにします。

Windows 10 アプリケーションとシェル要素をピクセル密度が異なるモニター上で一貫したサイズで表示できるように、Windows にはスケーリング設定が組み込まれています。これらのスケーリング設定が調整されているときにタイトルが正しくレンダリングおよびマウス入力を処理するために、既定の DPI 認識を設定してください。これを怠ると、タイトルの表示が不正確となり、高 DPI ディスプレイを持つユーザーにとって使用できないものになる場合があります。

## 高 DPI 認識を有効にする

#### タイトルが高 DPI ディスプレイをサポートすることを確認する

1. ゲーム実行ファイルのアセンブリ マニフェスト XML を確認します。これは titleName.exe、titleName.exe と並ぶマニフェスト ファイル、またはゲーム実行ファイル内に埋め込まれたマニフェストである場合があります。埋め込みマニフェストは、以下のように [sigcheck](https://learn.microsoft.com/sysinternals/downloads/sigcheck) を使ってコマンド ラインからゲーム実行ファイルから抽出できます。
   ```cpp theme={null}
   sigcheck -m titleName.exe
   ```
2. マニフェスト XML に次の `<dpiAware>` タグしかない場合、高 DPI ディスプレイはサポートされていません。
   ```cpp theme={null}
   <windowsSettings>
       <dpiAware>
           true
       </dpiAware>
   </windowsSettings>
   ```
3. 埋め込みマニフェストは、ルーズ マニフェストより優先されます。存在する場合は手順 4 に進んでください。埋め込みマニフェストがない場合は、次の内容の titleName.exe.manifest ファイルを作成します。
   ```cpp theme={null}
   <?xml version="1.0" encoding="UTF-8" standlone="yes"?>
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <application xmlns="urn:schemas-microsoft-com:asm.v3">
       <windowsSettings>
           <dpiAwareness xmlns="https://schemas.microsoft.com/SMT/2016/WindowsSettings">
               PerMonitorV2
           </dpiAwareness>
       </windowsSettings>
   </application>
   </assembly>
   ```
4. 埋め込みマニフェストがある場合は、Windows SDK の [Mt.exe](https://learn.microsoft.com/windows/win32/sbscs/mt-exe) ツールを使い、次のようにコマンド ラインからそれを取得します。
   ```cpp theme={null}
   mt -inputresource:<titleExeFilename> -out:<manifestOutputFilename>
   ```
5. 埋め込みマニフェストを編集して、次のように新しい `<dpiAwareness>` タグを追加します。
   ```cpp theme={null}
   <windowsSettings>
       <dpiAwareness xmlns="https://schemas.microsoft.com/SMT/2016/WindowsSettings">
           PerMonitorV2
       </dpiAwareness>
   </windowsSettings>
   ```
6. Windows SDK の [Mt.exe](https://learn.microsoft.com/windows/win32/sbscs/mt-exe) ツールを使い、次のようにコマンド ラインから埋め込みマニフェストを更新します。
   ```cpp theme={null}
   mt -updateresource:<titleExeFilename> -manifest <manifestFilename>
   ```

これでタイトルは高 DPI ディスプレイをサポートするようになりました。

## 高 DPI 認識を検証する

#### タイトルが高 DPI ディスプレイをサポートすることを確認する

1. Surface Studio 2 など、高 DPI ディスプレイを備えた PC で、**Settings** > **Display** に移動し、スケーリングを **150%** に設定します。
2. タイトルを起動します。
3. カーソルが存在する画面を確認し、タイトルが期待どおりに表示されることを確認します。たとえば、フル スクリーン タイトルは画面全体を占めるべきです。
4. カーソルを画面上で移動させ、タイトル ウィンドウの表面全体にカーソルが到達できることを確認します。
5. インタラクティブな UI 要素（ボタンなど）にホバーし、視覚状態とインタラクションが期待どおりに動作することを確認します。たとえば、ボタンはカーソルが直接その上にあるとき（隣接しているときではなく）に視覚状態が変わるはずです。

## 注意事項

* レジストリ仮想化を無効にすることが高 DPI 認識の問題の解決策として提案されることがありますが、推奨しません。
* Visual Studio の Configuration Properties には DPI Awareness オプションがありますが、これは古い `<dpiAware>` タグを使用しており、MSIXVC パッケージ化されたタイトルでは動作しません。

## 関連情報

[Setting the default DPI awareness for a process](https://learn.microsoft.com/previous-versions/windows/desktop/legacy/mt846517\(v=vs.85\))
