VB.NETアプリケーションの作成Windowsテーマと溶け込む
-
28-09-2019 - |
質問
以前は、VB6をピットドルにして、いくつかの個人プロジェクトを開発していました。 Windows 7へのアップグレードに続いて、VB.Net Express Edition 2010をピドルすることにしました。
VB6アプリケーションにWindowsの視覚的なスタイルと溶け込むことを望んでいる場合は、説明されているコードとテクニックを使用します。 ここ. 。要するに、アプリケーション内でマニフェストファイルと数回の呼び出しを使用し、ほとんどの要素が適用されたXPテーマに似ています。 2000、95、または98に実行された場合、標準のWindowsアプリのように見えます。すべてが良かった。
今、私はVB.NETに移りました、私は簡単な「Hello、World」アプリケーションを書きましたが、Windows 7のテーマのように見えるようにする方法についてはまったくわかりません(たとえば、フォントはシステムフォントとThe Systemと一致します。ウィジェットは正しくスタイリングされます)。
フォントを変更するだけではハックであり、セットアップが異なるマシンの場所から外れたり、デフォルトのフォントが異なるWindowsの別のバージョンを実行したりします。
Windowsのバージョンに関係なく、アプリケーションが適用されたWindowsテーマと一致するようにするにはどうすればよいですか?
解決
Windowsフォームアプリを作成すると、これの多くは自動です。彼らは、テーマの色でそれ自体を描く標準的なネイティブウィンドウコントロールを(ほとんど)使用します。しかし、例外があります:
フォームアイテムテンプレートは、Microsoft Sans Serifという名前のデフォルトのフォントを使用します。 Vista/Win7デフォルトに一致するように、Segoe UIに変更する必要があります。これはフォームクラスにのみ必要であり、それに置いたすべてのコントロールは、そのフォントを自動的に継承します。 XPマシンでは、Windowsフォントマッパーがフォントが欠落していることに気付き、自動的にMSSに戻ります。
Menustripクラスは、カスタムレンダリングを使用してメニュー項目を描画します。 Rendermodeプロパティをシステムに変更すると、Windowsスタイルと一致しようとしますが、描画方法はWin7スタイルと一致しません。ツールボックスを右クリックして、アイテムを選択し、[Mainmenu]を選択します。それはレガシーバージョンです します Windowsを使用してメニューを描画して、適切なテーマの外観を生成します。
ツールストリップの非常によく似た問題。レガシーバージョンはツールバーです。これは飲み込むのが難しいものであり、ツールバーを平らで醜い見た目にする鉄筋を使用しません。
WPFには同様の問題がありますが、WPFが標準のWindowsコントロールを使用しないという追加の問題があります。そして、微妙な場所でそれを間違えます。