既存のWin32 MFCベースアプリケーションのいずれかに問題があります。高dpi設定を使用するディスプレイでは正しく表示されません。具体的には、120 dpiを選択したWindows XPでは、テキストが拡大され、コンテナ(テキストがボタンの境界をオーバーフローするなど)がないアプリ内の場所がいくつかあります。 96 dpiが選択され、「XPスタイルのdpiスケーリングを使用する」が選択されている場合、これはWindows 7(およびVista)でも発生します。 XPスタイルのスケーリングが選択されていない場合、Win7はDPI仮想化を代わりに使用することを理解しています。 DPI仮想化を使用すると、すべてうまく見えます(奇妙ですが、少なくとも正しいです)。 Win7ではデフォルトで120 dpiはxpスタイルのスケーリングを使用し、次の設定(144 dpi)では使用しません。だから我々のアプリは144 dpiで正しく見えるが、120 dpiで間違っている。Windowsアプリケーション - DPIの問題
アプリケーションを「DPI対応」と宣言するようにアプリケーションマニフェストを編集すると、これはDPI仮想化(XPスタイルのdpiスケーリングではなく)に変わります。物事はまだ本当に悪く見える(120 dpiでは変更なし、144 dpiは現在壊れている)。
私はこの問題を解決する必要があります。私は一般的にDPI /スケーリングの問題を読み解いてみましたが、学習経験があります。これまで私は適切な解決策を見つけていませんでした。現時点では、私は現在、徹底的かつ正確な修正を行うつもりはない(アプリケーションは、dpiに従ってすべての要素を正確に拡大する)。それにはたくさんの書き換えが必要です。私は本当に2つの可能な解決策があると思う。 1つはDPIスケーリングのすべての種類を一括してオフにします。これは、ユーザーのWin7システムが120 dpiに設定されていれば、システム上のすべてのものは良く見えるが、私たちのアプリケーションは正しく見えるが、他のアプリケーションの他のすべてのものと比べると小さいだろう。 2つ目の解決方法は、DPI仮想化を使用してXPスタイルのdpiスケーリングを使用しないようにする方法です。これをアプリケーション側の変更にして、エンドユーザーがWindowsの構成を変更する必要がないようにします。
これまでのところ、いずれの解決策も達成する方法が見つかりませんでした。
このテーマに関する知識が豊富な方は、回答して正しい方法で私を指摘できますか?
おかげ
レイアウトコードまたは図面コードに問題はありますか?たとえば、ボタンやその他の標準コントロールをxピクセル単位で作成する問題、または固定サイズの独自のコントロール(GDI呼び出しなど)を描画するコードがあるという問題がありますか?あなたのレイアウトはどうやっていますか?フォーム?ダイアログテンプレート?カスタムコード? –
ここには魔法はありません。窓を大きくする必要があります。またはあなたのフォントが小さくて、あなたの毒を選んでください。 –