Windows XP から、ウィンドウとかの表示が「Visual Style」に変わってます。
が、VisualC++で普通にアプリケーション作っても、古いスタイルでの表示になってしまいます。
ウィンドウの枠の部分は Visual Style になってますが、中のコントロール類は古いスタイルですね。
これは、Windows XP からは comctl32.dll という、コモンコントロールが入ってるDLLを複数用意してあって、
特に指定のない場合は古いバージョン(V5)のDLLを使用するようになっているからです。
(これらのDLLファイルは、WINDOWS フォルダの中の WinSxS フォルダの中に入っています)
今回は、これを Visual Style にする(comctl32.dll version 6 を使う)方法の紹介です。
- manifest ファイルを使用する
これがお手軽な方法です。
プログラムの EXE ファイルと同じディレクトリに、manifest ファイルを置けばOK。
manifest ファイルは、アプリケーションの詳細と、プログラムを実行するのに必要なコンポーネントの情報を記述するのに使います。
なので、このファイルの中で comctl32.dll のバージョン6が必要だと書いておけばOKなわけです。
manifest ファイルの中身は、XML 形式になっています。
以下が、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="X86"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>アプリケーションの詳細情報をここに記述</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
うーん、よくわかりませんね(ぉ
が、XP Visual Style を使うためだけであれば、上記の manifest ファイルをそのまま使用してOKです。
また、この色で表示されている部分は、適当に書き換えてOKです。
manifest ファイルのファイル名は、プログラムのEXEファイル名+.manifest にしてください。
例:MyApplication.exe なら、 MyApplication.exe.manifest
そんなわけなので、別に再コンパイルとかしなくても、manifest ファイルさえ用意できれば、既存のプログラムを Visual Style 化するのも簡単です。
寿さんの「XP Style Apply Tool」等はこれを利用しています。
ただ、バージョン6の comctl32.dll でも以前と全く同じ動きをするわけではないようなので、Microsoft 的には両方のバージョンで動くことをちゃんとテストしれ、
というスタンスのようです。
- EXE ファイルにリソースとして manifest ファイルを埋め込む
これは上の手順で利用した manifest ファイルを exe ファイルに埋め込んでしまう方法です。
まずは、上と同じ手順で manifest ファイルを用意して、ソースファイルと同じフォルダに置いておきます。
次に、File View から、xxxx.rc2 ファイルを選択します。(メモ帳で編集しても別にいいですけど)
//
// XPVIZ.RC2 - このリソースは Microsoft Visual C++ で直接編集することはできません
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// 独自にリソースを編集する場合はこの場所に追加してください...
/////////////////////////////////////////////////////////////////////////////
こんな内容だと思います。
で、「独自にリソースを追加する場合は…」の下の行に、以下の1行を追加します。
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "XPviz.exe.manifest"
""の中には、manifest ファイルのファイル名を指定してあげます。
あとはビルドして実行です。

こんな感じですね。
ちなみに、後に紹介したリソースとして埋め込む方法は、割と新しめの Platform SDK がインストールされてないと
コンパイルできないと思いますのでご注意を。