« 2008年05月 | メイン | 2008年07月 »

2008年06月 アーカイブ

2008年06月19日

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

を追加。

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

About 2008年06月

2008年06月にブログ「Neutral Scent」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2008年05月です。

次のアーカイブは2008年07月です。

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