setwindowtheme mit gnu gcc
-
hi!
Ich benutze Code::Blocks und darin den GNU GCC Compiler...
jetzt will ich einer Listview nen andern Style/Theme geben (vom Explorer)
Ich hab uxtheme.h drin, uxtheme.lib und uxtheme.dll geladen vorm SetWindowTheme aufruf.
Zuerst hab ich dann den error bekommen:error: `SetWindowTheme' was not declared in this scope
dann hab ich mal den Prototyp von SetWindowTheme aus uxtheme.h rauskopiert und direkt eingefügt im Programm (oben)
dann bekomm ich folgenden Linkererror:undefined reference to `SetWindowTheme(HWND__*, wchar_t const*, wchar_t const*)@12'
Weiß jemand was ich machen muss, dass es läuft? Bei msdn steht nämlich bloß uxtheme.h,uxtheme.lib,uxtheme.dll und minimum system xp... (ich hab vista)
MFG
-
Möglich, dass bei Dir noch veraltete Header und lib-Dateien installiert sind. Schon mal das aktuelle SDK für Vista probiert?
-
najaa... also ich glaub dass der Compiler ausm eigenen ordner raus nimmt... also net iwelche aufm system installierten libs...
aber wenn die veraltet wären, und setwindowtheme zu dem zeitpunkt noch nicht existiert hat, wärs ja im header nicht drin... (isses aber...)
MFG
-
1. uxtheme.h includiert?
2. uxtheme.lib bei den zusätzlich benötigten Bibliotheken angegeben?
-
ja... beides gemacht... -.-
-
juhu
hab jetzt die lösung gefunden (nach stundenlangem googeln -.-)
also eigentlich is das ganz einfach:HINSTANCE hLib=LoadLibrary("UxTheme.dll");// lade Uxtheme.dll typedef HRESULT (__stdcall *dllSetWindowTheme)(HWND,LPCWSTR,LPCWSTR); dllSetWindowTheme SetWindowTheme=(dllSetWindowTheme)GetProcAddress(hLib,"SetWindowTheme");// Hole Adresse der Funktion aus dll SetWindowTheme (ListView, L"explorer", NULL);// führe sie aus FreeLibrary(hLib);// schließe die dll
es war also eig. garnicht der compiler...
Hoffe es hilft vieleicht...
MFG