●WindowsXPスタイルを適用するManifestリソースはリンクされていた。
●以下のAPIをWM_CREATEを捕捉した時点で実行したがXPスタイルで表示された。
SetWindowTheme(m_hWnd, L"explorer", NULL);
/* m_hWnd:コモンコントロールのウィンドウハンドル */
●「マルチバイト文字コードセット(Shift-SJISコード)」でコンパイルしていた。
このマルチバイト文字コードセットを「Unicodeコードセット」でコンパイルした所、コモンコントロールはAeroスタイル(Vistaエクスプローラと同じスタイル)に変化して表示された。
一時はUnicode文字セットを使用していない事が原因と誤解したが、Visual Studio 2005が自動生成するManifestを使用することで問題を解決出来ることが判明した。
自力でリソースに埋め込んでいたManifestファイルを除去して再コンパイル&再実行した所、Aeroスタイルで表示された。
Manifestファイルの誤り
リソースに手動で組み込んでいたManifestファイルの使用を止め、自動生成されたマニフェストファイルを使用する。
完了
コモンコントロールをAeroスタイルにする場合は、以下の条件を全て満たす必要がある。
● 正しいManifest(Visual Studioに自動生成させるのがベター)を実行ファイルにリンクすること。
● SetWindowTheme()をコモンコントロールに引き渡すこと。
※ Manifestを生成する場合、以下のプリプロセッサ指令をstdafx.hに埋め込むとよい。
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
最終更新日:2007/08/19