XP-Stil lässt Buttons und Dialog-Boxes verschwinden
-
Hallo,
Ich versuche jetzt schon seit einiger Zeit mein Fenster
auf den Windows XP-Stil einzustellen.
Ich habe auch schon im Internet einiges dazu gefunden.
(über Google, die Suchfunktion im Forum zeigt mir zu diesem
Thema nichts an --> das kann ja nicht sein.)
Man braucht angeblich eine MANIFEST-Datei; die hab ich --><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity processorArchitecture="x86" version="5.1.0.0" type="win32" name="AUTORNAME"/> <description>PROGRAMMNAME</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="x86"/> </dependentAssembly> </dependency> </assembly>Mein Beispiel-Programm sieht dazu so aus -->
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Ich erscheine nicht!", "Hallo!", MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1); return 0; }Ist die MANIFEST-Datei im Projekt drin erscheint die Message-Box
nicht mehr, man hört nur noch das Popup-Geräusch.
Danach beendet sich das Programm.
Ich habe die Manifest-Datei schon über Resource usw. eingebunden,
aber es passiert immer dasselbe.Achja, ich habe die Visual C++ 2005 Express Edition.
Hoffe ihr wisst, was ich falsch mache und falls ich im falschen
Forum gepostet habe, bitte verschieben.Don06
-
InitCommonControls();
-
Also, du mußt schon den Inhalt der Manifest-Datei bearbeiten. Z.B. den Programmnamen, der muß genauso heißen, wei deine Exe-Datei (inkl. .exe). Das schreibst du in das Attribut von assemblyIdentity rein. Fälschlicherweise steht in deiner "AUTORENNAME" drin. Und deine Manifest sollte auch meinprogramm.exe.manifest heißen, wenn sie nicht als Resource verlinkt wird.
Ob es dann funktioniert, weiß ich nicht. Aber müsste.
-
Wenn Du 2005 verwendest, dann solltest Du das Manifest über pragmas einfügen, da Du sonst nur andere Probleme bekommst, wenn andere Manifest-Infos noch benötigt werden (z.B. zur CRT). Also, setze folgendes irgendwo in Deinem Source-Code ein:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
-
Also erstmal Danke für die schnellen Antworten.

(D)Evil schrieb:
InitCommonControls();
Und nochmal Danke an (D)Evil das hatte ich vergessen
*shame on me*@Jochen Kalmbach:
Ich werd´s mir schon mal für später merken. thx