MFCを使用してVS2008で作成されたプログラムがあります。これで、「モニターごとの DPI 対応」に変更して、ほぼ完了です。マニフェストを変更し、WM_DPICHANGE メッセージを処理しました。しかし、まだ 1 つの問題があります。
CFileDialogクラスを使用して開く/保存ダイアログを表示し、 SHBrowseForFolder関数を使用してフォルダー選択ダイアログを表示しました。ただし、これらのダイアログはすべて「モニターごとの DPI 対応」ではありません。DPI 設定が異なるモニター間でダイアログを移動しても、UI は調整されません。
これらのダイアログのメッセージを監視するためにスパイ++を使用しています.WM_DPICHANGEDメッセージを受信できることがわかりましたが、それを処理していません.
また、Windows 10 の notepad.exe でファイルを開くダイアログをテストしたところ、完全に機能しました。
これらのダイアログを「モニターごとの DPI 対応」にする方法を知っている人はいますか?
--------編集--------
さらに 2 つの問題があります。
- ウィンドウを異なる DPI のモニターに移動すると、ウィンドウのサイズは自動的に変更されますが、タイトル バーの高さとタイトルのフォント サイズは変更されません。
- チェックボックス コントロールのボックス サイズも変更されません。
これらの問題には何らかの関連があるのではないかと思いますが、わかりません。
--------悲しいニュース--------
Microsoft の「DPI チュートリアル サンプル」を VS2013 でコンパイルしましたが、同じ問題が発生しました。
https://code.msdn.microsoft.com/DPI-Tutorial-sample-64134744