2011-02-07 23 views
2

私はC#アプリケーションDPIに対応したいと思っています。 Windows APIにはSetProcessDPIAware()というコマンドが用意されていますが、問題はWindows Vista以上のWindowsのみで、XPでは動作しないという問題です。どのようにWindows版が使用されているかにかかわらず正しく表示されるようにコントロール、ボタン、フォントDPIを認識させるにはどうしたらいいですか?Windows XPのDPI対応アプリケーション

+1

どのような種類のC#アプリケーションですか?このWindowsフォームですか? –

+0

Windowsフォームアプリケーション。 –

答えて

6

SetProcessDPIAwareを呼び出すと、ちょうど魔法のあなたのためにすべてDPIを認識してなりません。その目的は、あなたのアプリケーションがDPIに対応するよう正しく書かれていることをWindowsに宣言することです。さらに、その使用は推奨されません。代わりにマニフェストでDPIの認識を宣言する必要があります。これについてはMSDNにarticleがあります。

+0

私がDPI認識をマニフェストで宣言すれば、それはWindows XPでも同様に機能するでしょうか? –

+0

@zeemalik:簡単な解決策があるかもしれません。あなたが上記の私のコメントに気づいていないかどうかは分かりませんが、あなたが開発しようとしているC#アプリケーションの種類を教えてください。 Windowsフォーム(WinForms)またはWPFを使用していますか? –

+0

WPFではなくWindowsフォームアプリケーションがあります。どのようにXPやWindowsの上位バージョンでも動くことができるように、すべてのコントロールとフォントが正しく表示されるようにするにはどうすればよいですか? –

2

this StackOverflow questionの設定をDPIするアプリケーションの応答を作成する方法についての私の適度に詳細な回答を参照してください。

ショートバージョンはScaleMode.DpiにすべてのフォームのAutoScaleModeを変更することができるということです。

しかし、それはScaleMode.Fontでそれを残す方が良いでしょう。 DPIが増加するにつれてフォントが大きくなります。