« MT更新のテスト 兼 小ネタ | メイン | ATLアプリでDPAPIを使用するサンプル »

IEツールバーにXP ビジュアルスタイルを適用するVS2005/2008編

ちょっとやり方を見つけるのにものすごく時間と労力がかかることがある。
これもそんなひとつ。

ATLとIBandObject でIEツールバーを作っていると、そのままの状態ではLunaスタイルが適用されなくて、他のGoogleツールバーなどと並べると、カクカクしててしょぼいボタンになってしまったりする。

で、XPのビジュアルスタイルなんてmanifest書くだけじゃん、と思ったらこれがハマった。
リソースに

ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "FooBar.dll.manifest"

とか書いてみたら、ビルドすると「出力を登録できませんでした」。
ぇぇー、と思っていろいろCut&Tryしてもさっぱり。

結局なんのことはない、VS2005以降ではVisual Studioが勝手に*.dll.embed.manifestを生成して組み込むようになってて、マニフェストが2重になってただけでした。

VS2005/2008時代のマニフェストの登録方法:

1. 以下のようなマニフェストファイルをプロジェクトに追加

CommCtrl.manifest (ファイル名はまぁなんでもいい)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
  xmlns="urn:schemas-microsoft-com:asm.v1"
  manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="*"
        publicKeyToken="6595b64144ccf1df"
        language="*"/>
    </dependentAssembly>
  </dependency>
</assembly>

2. 「プロジェクトのプロパティ/構成プロパティ/マニフェスト ツール/入力と出力/追加のマニフェスト ファイル」に上記のマニフェストファイル(CommCtrl.manifest)を追加。

3. stdafx.hに

#define ISOLATION_AWARE_ENABLED    1

を追加。

以上でなんとかなる、はずです。

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1938

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年06月19日 17:19に投稿されたエントリーのページです。

ひとつ前の投稿は「MT更新のテスト 兼 小ネタ」です。

次の投稿は「ATLアプリでDPAPIを使用するサンプル」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。