XP Style per Manifest und DLLs
-
Hi!
Ich habe mal in der FAQ gestöbert zum XP Style und das gefunden.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-187370.htmlKleine Exe gemacht, brav die Fenster mit CreateWindow erstellt usw. herrlich, alles läuft und schön im XP-Style.

Jetzt habe ich aus dieser Exe eine DLL gemacht, die von einer anderen Exe aufgerufen wird, doch nun kommt kein XP-Style mehr

Was kann ich tun?
-
1. Ist das Mnaifest intern?
2. Welche ID hat das Manifest nun in der DLL? IMHO sollte es nun die ID 2 haben.
-
Ich habe kein Manifest? Bei der exe habe ich auch keines benötigt. Einfach diese Zeilen da rein, dann diese Zeilen eingefügt:
#include <commctrl.h> #pragma comment(lib, "comctl32.lib")InitCommonControls aufgerufen und gut. Aber wieso das jetzt bei der DLL nicht mehr will, weiß ich nicht

-
Ohne Manifest kein XP Stil!
-
Bei der Exe habe ich doch auch keine resource oder manifest gebraucht durch diese Zeilen!
#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='*'\"") #endifWarum brauche ich jetzt ein Manifest?!
-
Witzbold. Diese Zeilen erzeugen ein Manifest, wenn der Manifest Compiler eingesetzt wird...
Also was steht nun in dem Manifest der DLL?
-
Wo kann ich das nachsehen?
Er nimmt diese Zeile:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
-
Im Ausgabe Verzeichnis steht das Manifest. Oder lädst die fertige DLL im VS und öffnest Sie als Ressource. Dann kannst Du sehen was als Manifest wirklich in der Datei ist und welche ID diese hat.
-
Da ist eine Datei Namens:
<dll-name>.dll.intermediate.manifest
und da steht Folgendes drin:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level='asInvoker' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' /> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
-
DasManifest sieht OK aus. Und was ist nun in der DLL selbst unter welcher ID eingefügt?
-
Wie welche ID? Ich hab doch noch nicht mal eine Resourcen-Datei? Oder brauche ich die jetzt bei DLLs und bei Exen nicht?
-
Wie wäre es mit ein wenig Grundlagen lesen in der MSDN? s.u.
1. Ein internes Manifest ist eine Ressource in der EXE, ob Du willst oder nicht.
2. Wenn ein Manifest drin ist, dann hat diese auch eine ID. Das aknnst Du auf dem von mir abgegeben Weg (laden der fertigen DLL in das VS) ermitteln.Grundlagen:
http://msdn.microsoft.com/en-us/library/dd408052(VS.85).aspx
Speziell:
http://msdn.microsoft.com/en-us/library/aa376607(VS.85).aspx
-
An das Manifest der Exe komme ich nicht heran, da die von einem anderen Hersteller ist.
-
Du musst doch gar nicht an das manifest der EXE rankommen...
Du scheinst die Zusammenhänge zwischen Manifest und XP Stil nicht verstanden zu haben.
-
Außer das es extremes Gefrickel und Gefusche ist, nein.