manifestファイル

Visual Studio 2010での開発のこと。

ネイティブアプリの開発の際、ビジュアルスタイルを摘要して見た目おされな感じにしたい。そんな時はmanifestファイルを使って最新のComCtrl32.dllとリンクするようにすりゃいいのは知っていた。
最近の Visual Studio はmanifestファイル勝手に作ってくれるし、それでいいのかなーと思っていたら甘かった。。。いや、初めから新しい環境で作成したプロジェクトは問題なさそうなのだが、古い開発環境で作成したプロジェクトを新しい開発環境でコンパイルし直しても、どうもXP以前を感じさせる古い外観のまま※。
ハマったのでメモ。
※この差分についてはいまいち解ってないので、後日調べることにしよう。

Visual Studio 2010で自動生成されるmanifestファイルにはComCtrl32.dllを使うような記述はないので、自分で用意したmanifestファイルを追加で読み込むようにプロジェクトに設定してやる。
[プロジェクト]->[プロパティ]でプロパティページを開き、[構成プロパティ]->[マニフェスト ツール]->[入出力]の「追加のマニフェストファイル」にマニフェストファイルへのパスを記述し、そのパスのファイルの中身はこんな感じ。

<?xml version="1.0" encoding="UTF-8" standalone="yes">
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="Microsoft.Windows"
type="win32"
/>
<description>アプリケーションの説明</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

manifestファイルなので、UTF-8で保存します。
巷のmanifestファイルのサンプルでは「processorArchitecture」が「x86」になっているのが多いですが、それだと64bit版のアプリだとうまく動かない。32bit版の ComCtrl32.dll を使おうとするから当然か。上記のように「*」にしておくと、コンパイラ(?)が自動で判断してくれるようなので、32bit版、64bit版で複数manifestファイルを用意する必要がなくて便利。

これでバージョン6台のComCtrl32.dllを使うようになり、めでたくビジュアルなスタイルでアプリケーションを利用できるようになりました。

Comment

Comment Form
公開設定

Trackback


→ この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。