Wir haben gerade unsere C++ - MFC-Anwendung von VS2005 zu VS2008 gewechselt. Unglücklicherweise hat unsere Benutzeroberfläche Probleme mit dem Aussehen, mit Dingen wie Gruppenkästen, die blau statt schwarz erscheinen, Eigenschaften, die einen weißen Hintergrund haben. Ich nehme an, dass MFC in VS2008 geändert wurde, um das OS-Thema zu respektieren (in meinem Fall XP-Standard) Thema). Leider wird es viel Arbeit erfordern, all unsere Steuerelemente und unsere benutzerdefinierten Symbolleisten zu ändern, um die App wieder anständig aussehen zu lassen.Deaktivieren Sie XP Theme in VS2008 kompilierte MFC App
Also, weiß jemand, ob es einen Weg im Code gibt, um die App zurück in VS2005-Modus zu setzen? Ich fand den folgenden Code
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);
, die die XP-Design stoppt abgeholt, aber alle Themen schaltet sich aus und lässt die Anwendung suchen, um mehr datiert, als es in VS2005 tat.
dank
Hallo, ich habe unsere Manifest-Datei überprüft und es gab einen Verweis auf commctl32 v6, der nicht in unserem vs2005-Manifest war. Ich entfernte das und es machte keinen Unterschied. Ich habe versucht, v5.82 der comctl32.dll zu referenzieren, aber meine App startet nicht. Hast du ein Beispielmanifest (version/publickeytoken info)? –
Leider nicht. Ich benutze normalerweise nicht C++. Ich habe mich nur mit Manifest-Dateien beschäftigt, nachdem ich auf Anfrage eines Clients etwas von Java in eine kompilierte ausführbare Datei umgewandelt hatte, und die kompilierte Version endete mit der älteren comctl32.dll, die geladen wurde, als sie die neuere hatte. – Powerlord
Sie sollten Ihre 'stdafx.h' Datei überprüfen. Die Manifest-Referenz kann auch dort gefunden werden. Sie können versuchen, die Manifest-Version zu ändern, aber es gibt ein 'publicKeyToken', das vermutlich ebenfalls geändert werden muss. – djeidot