Windowsマニフェストの”DPIの認識”の設定の違いによって、モーダルダイアログを最小化すると最小化ウィンドウが表示されない症状が発生する
問題
フォームから別のフォーム(モーダル)で開き、最小化のボタンを押すと、下図のように画面左下に最小化ウィンドウが表示されます。
しかしながら、以下の条件の場合、モーダルダイアログを最小化すると最小化ウィンドウが表示されない症状が発生します。
- IDEメニューの[プロジェクト]-[オプション]-[アプリケーション]-[マニフェスト]の”DPIの認識”の設定で、”なし”、もしくは”対応せず”に変更
- Windowsの[ディスプレイ設定]-[拡大縮小とレイアウト]の”テキスト、アプリ、その他の項目のサイズを変更する”の値を”125%”以上に設定
プロジェクトオプションのDPIの認識は、Windowsマニフェストファイルの
<dpiAware></dpiAware>、<dpiAwareness></dpiAwareness>の要素に保持されます。 詳しくは、マイクロソフトの「プロセスの既定の DPI 認識の設定」 のドキュメントを参照ください。
プロジェクトオプションのDPIの認識が「なし」、「対応せず」の場合は、 <dpiAware>false</dpiAware>、あるいは<dpiAwareness > unaware < /dpiAwareness>に設定され、DPIは認識されない、あるいは100%スケーリング(96 DPI)を想定しているため、最小化したウィンドウはクライアント領域内に表示されず、見た目上消えます。
こちらの動作は、RAD Studio XE8以前のバージョンのプロジェクトオプションに高DPIの設定が無いため、 DPIの認識が「なし」と同等で、過去バージョンからの既知の動作仕様となっています。
解決
Windowsの”テキスト、アプリ、その他の項目のサイズを変更する”の値を”125%”以上に設定している場合
- RAD Studio 10.3以降のバージョンの場合:
- ”DPIの認識”を”ディスプレイごとのDPIに対応 V2”(推奨)に設定してください。
- RAD Studio 10 Seattle、10.1 Berlin、10.2 Tokyoの場合:
- RAD Studio XE8以前のバージョンの場合:
- 上述しましたようにプロジェクトオプションに高DPIの設定が無いため、最小化ウィンドウは表示されません。ただし、下図のようにタスクバーのアプリケーションへマウスマーソルを移動し、表示されるフォームをクリックすれば、モーダルダイアログは元のウィンドウサイズに戻せます。
*:![]()