トップページ> 書庫> Visual C++/MFC 俺的メモ> XP Visual Style を適用する

XP Visual Style を適用する
Windows XP から、ウィンドウとかの表示が「Visual Style」に変わってます。
が、VisualC++で普通にアプリケーション作っても、古いスタイルでの表示になってしまいます。



ウィンドウの枠の部分は Visual Style になってますが、中のコントロール類は古いスタイルですね。
これは、Windows XP からは comctl32.dll という、コモンコントロールが入ってるDLLを複数用意してあって、 特に指定のない場合は古いバージョン(V5)のDLLを使用するようになっているからです。
(これらのDLLファイルは、WINDOWS フォルダの中の WinSxS フォルダの中に入っています)
今回は、これを Visual Style にする(comctl32.dll version 6 を使う)方法の紹介です。

  1. 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 的には両方のバージョンで動くことをちゃんとテストしれ、 というスタンスのようです。

  2. 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 がインストールされてないと コンパイルできないと思いますのでご注意を。

DBWebSystem ver-1.00
このページの内容は… (・∀・)[良い] / (-ω-;)[悪い]
ContentID : VCMemo8, Total Page Views : 22591, Page Score : 0
Last Update : 2005/05/06 17:40:49 (LIRS.txt)
System Designed & Coded by ヨシヲ
[このコンテンツを編集] [このコンテンツにリンクしているページ]