Controls in Visual Studio 2005 haben "altes Design"
-
Hallo,
habe momentan Gelegenheit ein wenig mit Visual Studio 2005 herumzuexperimentieren.
Folgendes, die "Optik" betreffendes Problem habe ich dabei:
Wenn ich beispielsweise einen Dialog mit verschiedenen Controls erstelle, entsprechen diese dem aktuellen Design (d.h. abgerundete Ecken, grüne Checkbox-Häkchen, etc.), allerdings nur innerhalb des Dialog-Editors und wenn ich "Dialog testen" aufrufe. Starte ich das Programm nach dem Build, erscheinen wieder die eckigen Buttons, etc.
Kann mir jemand sagen, woran das liegen könnte? Muss ich irgendwelche Projekteinstellungen o.ä. ändern?Danke,
Nanuq
-
Das liegt afaik an der Manifest-Datei, die entweder fehlt, oder falsch ist oder sowas in der Richtung. Versuche einfach mal eine Manifest-Datei im Verzeichnis zu erstellen. Wenn das ncihts hilft, dann versuch mal sie mit reinzukompilieren.
-
Danke für die schnelle Antwort. Ich muss zugeben, dass mir die Manifest-Datei nicht viel sagt. Allerdings werden Manifest-Dateien beim Build erzeugt (insgesamt drei ".exe.embed.manifest", ".exe.embed.manifest.res" und "*.exe.itermediate.manifest"). Das ist auch in den Linker-Optionen des Projekts entsprechend eingestellt.
Ich habe auf Verdacht einige Settings-Varianten durchprobiert, allerdings ohne Erfolg....
-
Dann trag mal folgendes in einen Header von DIr ein (z.B. stdafx.h):
#if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_IA64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endifDas ist das besagte Manifest was Dir weiterhilft...
-
google mal mit den Informationen. Man muss noch irgendwas in der stdafx.h hinzufügen wenn ich mich richtig erinner...
Wenn du zu keiner lösung kommst, dann schick mir übers forum eine email, ich schau dann am Montag nach.EDIT:
ok, Jochen hat es in der Zwischenzeit schon rausgesucht. Das meinte ich.
-
Danke zunächst mal für eure Tipps, inzwischen funktioniert alles wie gewünscht. Trotzdem nochmal ein paar Anmerkungen (vielleicht erzähle ich einigen damit nichts Neues, anderen hilft es vielleicht trotzdem weiter).
@Jochen Kalmbach
Der von dir angegebene Code steht ohnehin in der "stdafx.h", allerdings zwischen#ifdef _UNICODE // ... #endifWenn ich bei der Erstellung eines Projekts die Ressourcensprach auf "deutsch" umstelle (ich verwende die englische Version von Visual Studio), wird automatisch die Checkbox "Use Unicode libraries" deaktiviert und demnach entsteht das "alte Design" im Dialog.
Man hat also offensichtlich entweder die Möglichkeit die Unicode-libraries zu verwenden oder die oben angegebenen #ifdef/#endif-Zeilen zu löschen, wenn man die schicken XP-Controls haben möchte.
-
Warum das "_UNICODE" da drum rum ist verstehe ich bis heute auch noch nicht...
-
Ich habe das als Bug eingetragen
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=180956Allerdings von MS geschlossen mit einer mir absolut uneinsichtigen Anmerkung!
-
Finde die Erklärung eigentlich recht klar. Wieso findest du sie uneinsichtig?
-
Ja dann bau doch einfach ein unicode Programm..., nen?

-
dEUs schrieb:
Finde die Erklärung eigentlich recht klar. Wieso findest du sie uneinsichtig?
Ganz einfach: Es ist Quark. Niergendwo in der SDK Doku oder zu den Themes steht: Dies geht nur in Unicode. Es steht umgekehrt klar: Ansi und Unicode werden unterstützt.
Sicherlich ist Fakt: Einige Sachen funktionieren mit Themes nicht korrekt bei Verwendung eines ANSI Fensters..., hier müssten die Windows Entwickler ran, aber das die Compilerhersteler hier eine Bremse einbauen ist verwirrend und in meinen Augen eigentümlich.
Just my 2 cents
-
ok, dann stimmt die Aussage des Entwicklers einfach nciht... Dann stimme ich dir natürlich zu.
-
also ich hab immer eine "xxx.exe.manifest" datei dem projekt hinzugefuegt dann hatte ich das xp design
ich compiliere mal in multibyte und mal unicode, je nachdem
heisst das das cih die datei theoretisch gar nicht hinzufuegen muesste ?
-
Wenn Du die Manifest Datei als Ressource einschließt benötigst Du diese nicht im Verzeichnis. Das ist korrekt.
Ein Manifest in irgendeiner Form benötigst Du für den Themed Stil!
Wenn Du eben VS2005 nutzt macht das eine Compiler Option für Dich!