Nous venons de passer notre application C++ MFC de VS2005 à VS2008. Malheureusement, notre interface a des problèmes d'apparence, avec des choses comme les boîtes de groupe apparaissant en bleu plutôt qu'en noir, les boîtes de dialogue de propriétés ayant un fond blanc etc. Je suppose que dans VS2008, MFC a été modifié pour respecter le thème OS thème). Malheureusement, changer tous nos contrôles et nos barres d'outils personnalisées pour rendre l'application encore plus décente va demander beaucoup de travail. Donc, est-ce que quelqu'un sait s'il y a un moyen dans le code de remettre l'application en mode VS2005? J'ai trouvé le code suivantDésactiver le thème XP dans l'application MFC compilée VS2008
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);
Ce qui fait arrêter le thème XP étant ramassé, mais désactive tous les thèmes et laisse l'application recherche plus datée qu'il a fait dans VS2005.
grâce
Salut, j'ai vérifié notre fichier manifeste et il y avait une référence à commctl32 v6 qui n'était pas dans notre manifeste vs2005. J'ai enlevé ceci et cela n'a fait aucune différence. J'ai essayé de référencer v5.82 du comctl32.dll mais mon application ne démarre pas. Avez-vous un exemple de manifeste (version/publickeytoken info)? –
Malheureusement, je ne le fais pas. Je n'utilise généralement pas C++. J'ai seulement traité des fichiers manifestes après avoir converti quelque chose de Java en un exécutable compilé sur la demande d'un client, et la version compilée s'est retrouvée avec l'ancien comctl32.dll chargé quand il aurait dû avoir le plus récent. – Powerlord
Vous devriez vérifier votre fichier 'stdafx.h'. La référence manifeste peut également être trouvée ici. Vous pouvez essayer de changer la version du manifeste, mais il y a un 'publicKeyToken' que je suppose qu'il faudra aussi changer. – djeidot