Win32アプリケーションにVisual Styleを適用する

Visual Studio 2005以降でWin32アプリケーションを作ったときに、コモンコントロールの Visual Style を適用する簡単な方法をまとめる。(.NETからだと何もしなくても使えるのに…)

コモンコントロールの比較(左:旧,右:新)

Visual Style の仕組み

コモンコントロールが実装されている ComCtrl32.dll の読み込むバージョンに6以降を指定すればその見た目を変えられるらしい。Side by Side (SxS) というインスタンス(exe)によって違うバージョンのdllを読み込む機能に指示を与えるためにマニフェスト(manifest)を埋め込む。 マニフェストはxmlで書かれており、VCのリンカーからある程度自動生成できる。(マニフェストツールから追加情報を与えることもできるが、ファイルを新たに作るのが面倒だったので、今回はリンカーオプションから設定した。)また、Vistaから増えた新しいコモンコントロールも使えるようになる。

設定方法

プロジェクトのプロパティ ≫ 構成プロパティ > リンカー > マニフェスト ファイル ≫ 追加のマニフェスト依存関係

に次の行を貼り付ける。(x86の場合)

type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'

複数のアーキテクチャを設定する場合は x86 を amd64 などに変更するか、VS2010ならマクロ $(ProcessorArchitecture) が使えるのでまとめて設定できる。

プロパティページから設定

ref:

One thought on “Win32アプリケーションにVisual Styleを適用する

  1. processorArchitecture ですが、 $(processorArchitecture) を使用すると64bitでのビルドでも x86 が指定されてしまうようです。
    理由はわかりませんが、私は $(PlatformShortName) を使用しています。
    こちらだと今のところうまくリンクされるようです。

Comments are closed.