2009-03-11 9 views
0

最近、C++ MFCアプリケーションをVS2005からVS2008に切り替えました。残念なことに、私たちのUIには外見上の問題があります。グループボックスは黒ではなく青色で表示され、プロパティダイアログは白い背景などです。私はVS2008ではMFCがOSテーマを尊重するように変更されていると推測しますテーマ)。残念なことに、すべてのコントロールとカスタムツールバーを変更して、アプリをまともに見せるようにするには、多くの作業が必要になります。VS2008でXPテーマをコンパイルMFCアプリケーション

VS2005モードでアプリケーションを戻すコードがあるかどうかは知っていますか?私は、XPのテーマをピックアップしている停止しない次のコード

typedef void (WINAPI *tSetThemeAppProperties)( DWORD); 

tSetThemeAppProperties pSetThemeAppProperties=0; 
HINSTANCE handle = ::LoadLibrary("UxTheme.dll"); 

if (handle) 
    pSetThemeAppProperties = (tSetThemeAppProperties) ::GetProcAddress(handle,"SetThemeAppProperties"); 


if (pSetThemeAppProperties) 
{ 
    // call function 
    pSetThemeAppProperties(0/*dwFlags*/); 
} 
::FreeLibrary(handle); 

を見つけましたが、すべてのテーマをオフにして、それがVS2005でやったよりも多くの日付探してアプリケーションを残します。

おかげ

答えて

2

それはVS2008は、バージョン6.0のcomctl32.dllではなく、5.82のcomctl32.dll ... Windows XPおよびそれ以降との両方の船をロードするプロジェクトでManifestファイルを含むされている可能性があります。

+0

こんにちは、私はマニフェストファイルをチェックし、commctl32 v6のリファレンスがありましたが、これは私たちの2005年のマニフェストではありませんでした。私はこれを削除しても差はありませんでした。私はcomctl32.dllのv5.82を参照しようとしましたが、私のアプリケーションは起動しません。 example manifest(version/publickeytoken info)がありますか? –

+0

残念ながら、私はしません。私は通常C++を使用しません。私は、Javaから何かをクライアントの要求に応じてコンパイルされた実行可能ファイルに変換した後でマニフェストファイルを処理しただけです。コンパイルされたバージョンは、新しいものを持っていたはずの古いcomctl32.dllで終了しました。 – Powerlord

+0

'stdafx.h'ファイルをチェックしてください。マニフェスト参照は、そこにもあります。マニフェストのバージョンを変更することはできますが、変更する必要があると思われる 'publicKeyToken'があります。 – djeidot

1

「プロパティ - >構成プロパティ - >リンカ - >マニフェストファイル」で、「マニフェストを生成」オプションを「いいえ」に設定します。

必要に応じて独自のマニフェストファイルを追加し、「プロパティ - >設定プロパティ - >マニフェストツール - >入力と出力」、「入力リソースマニフェスト」に設定します。

commctl32 v6への参照が含まれていない独自のマニフェストファイルを追加する場合は、必ず確認してください。

関連する問題