XP Style - Funktioniert nicht -.-
-
Hallo,
Ich will endlich auch C++ in der Abteilung GUI lernen. Habe mich hier für WinAPI entschieden zumindest für den Anfang

jedoch gefällt mir der alte Style nicht. Habe hier im Forum nach XP style gesucht und habe gelesen das man nur in seinem Projekt folgende zeilen einfügen soll:
#ifdef _UNICODE #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='*'\"") #endif #endifUm das ganze zu testen habe ich dann auf Debuggen geklickt und siehe da ein Fester ganz in weiß. so nun wollt ich im Menü schauen wie das Info Fenster ausschaut jedoch öffnet er das fenster nicht mehr -.-
folgenden Code habe ich benutzt: (Beim neuen Projekt der beispiel Code!)
// ManifestTest.cpp : Definiert den Einstiegspunkt für die Anwendung. // #include "stdafx.h" #include "ManifestTest.h" #ifdef _UNICODE #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='*'\"") #endif #endif #define MAX_LOADSTRING 100 // Globale Variablen: HINSTANCE hInst; // Aktuelle Instanz TCHAR szTitle[MAX_LOADSTRING]; // Titelleistentext TCHAR szWindowClass[MAX_LOADSTRING]; // Klassenname des Hauptfensters // Vorwärtsdeklarationen der in diesem Codemodul enthaltenen Funktionen: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: Hier Code einfügen. MSG msg; HACCEL hAccelTable; // Globale Zeichenfolgen initialisieren LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_MANIFESTTEST, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Anwendungsinitialisierung ausführen: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MANIFESTTEST)); // Hauptmeldungsschleife: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; } // // FUNKTION: MyRegisterClass() // // ZWECK: Registriert die Fensterklasse. // // KOMMENTARE: // // Sie müssen die Funktion verwenden, wenn Sie möchten, dass der Code // mit Win32-Systemen kompatibel ist, bevor die RegisterClassEx-Funktion // zu Windows 95 hinzugefügt wurde. Der Aufruf der Funktion ist wichtig, // damit die kleinen Symbole, die mit der Anwendung verknüpft sind, // richtig formatiert werden. // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MANIFESTTEST)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_MANIFESTTEST); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassEx(&wcex); } // // FUNKTION: InitInstance(HINSTANCE, int) // // ZWECK: Speichert das Instanzenhandle und erstellt das Hauptfenster. // // KOMMENTARE: // // In dieser Funktion wird das Instanzenhandle in einer globalen Variablen gespeichert, und das // Hauptprogrammfenster wird erstellt und angezeigt. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; // Instanzenhandle in der globalen Variablen speichern hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } // // FUNKTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // ZWECK: Verarbeitet Meldungen vom Hauptfenster. // // WM_COMMAND - Verarbeiten des Anwendungsmenüs // WM_PAINT - Zeichnen des Hauptfensters // WM_DESTROY - Beenden-Meldung anzeigen und zurückgeben // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Menüauswahl bearbeiten: switch (wmId) { case IDM_\1: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Hier den Zeichnungscode hinzufügen. EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // Meldungshandler für Infofeld. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }Das komische ist ich bekomm keine Fehlermeldung absolut nichts!
Dann hat mir mal ein Kumpel seine .exe Datei zugesendet, bei dem es klappt. Jedoch wenn ich seine komplierte Datei starte habe ich ebenfalls das Problem das ich keine Menü- aktionen anklicken kann ausser die Schaltfläche Beenden.Fehlt bei mir irgend eine besondere Datei?
Habe mir das SP2 schon geladen.
Arbeite mit der Virtual C++ 2005 Express IDE!Kann mir wer Helfen?
Gruß de Funjoy
-
Das ganze hat aber nichts mit dem Manifest zu tun, dass Du hier verwendest.
Ich sehe hier keinen Zusammenhang.
Hast Du an den Menüresourcen rumgespielt? Evtl. hast Du dem Menü eine andere ID gegeben!
-
vieleicht liegts ja daran bei mein kumpel hats geholfen
[cpp] #include <commctrl.h> #pragma comment(lib,"Comctl32.lib") //... InitCommonControls(); //.. [/cpp]weils fehlt

-
Hallo,
Sorry das ich erst jetzt antworte, ich war die Tage nicht daheim.
Ich fang noch mal von vorne an. Ich erstelle ein Win32 (Anwendung) Projekt (Leer). Zum Projekt füge ich eine C++ Datei namens MessageBox.cpp ein. Die Datei beinhaltet folgenden Code:
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, TEXT("Hello, WinAPI!"), TEXT("HelloMsg"), MB_OK | MB_ICONQUESTION | MB_HELP); return 0; }Wie Ihr sicherlich schon erkennt, will ich nur einen Stinknormale Msg Box ausgeben. Wenn ich jetzt Debugge kommt die gewünschte msg Box jedoch im alten Windows look. Um jetzt zu versuchen den look in Win XP zu bekommen gehe ich wie folgt vor.
Ich erstelle im Projekt ordner eine XML Datei die ich einfach mal xpstyle.xml nenne. In der Datei steht folgendes:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>Nun gehe ich wieder in Visual Studio, und unter Projekt -> Eigenschaften (ALT + F7) öffnet sich das Fenster für Projekteigenschaften. Hier wähle ich dann:
Konfigurationseigenschaften -> Manifesttool -> Eingabe und Ausgabe -> Zusätzliche Manifestdateien aus und füge dort meine xpstyle.xml Datei zu.So das sollte ja eigentlich reichen, richtig? Visual Studio hat ja jetzt das die xpstyle.xml Datei als Manifest eingebettet.
Demnach geh ich jetzt einfach wieder auf Debuggen und hoffe das es Funktioniert.
Visual Studio blinkt kurz auf und gibt mir keine msg Box aus aber auch keine Fehlermeldung.Hier mal ein Auszug aus der Debug Ausgabe:
"MessageBox.exe": "D:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\debug\MessageBox.exe" geladen, Symbole wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\ntdll.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\kernel32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\user32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\gdi32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll" geladen, Symbole wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\msvcrt.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\imm32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\advapi32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\rpcrt4.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\uxtheme.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\MSCTF.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\version.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\version.dll" entladen. "MessageBox.exe": "D:\WINDOWS\system32\MSCTFIME.IME" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\ole32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\system32\shlwapi.dll" geladen, Exporte wurden geladen. "MessageBox.exe": "D:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll" entladen. "MessageBox.exe": "D:\WINDOWS\system32\shlwapi.dll" entladen. Das Programm "[292] MessageBox.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.Da schein alles ok zu sein oder?
Hier noch der Inhalt der BuildLog.htm Datei:
Buildprotokoll
Erstellen wurde gestartet: Projekt: "MessageBox", Konfiguration: "Debug|Win32"
Befehlszeilen
Die temporäre Datei "d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\RSP00000840163936.rsp" wird erstellt. Inhalt:
[
/out:".\debug\MessageBox.exe.embed.manifest" /notify_update /manifest ".\xpstyle.xml"".\debug\MessageBox.exe.intermediate.manifest"
]Erstellen der Befehlszeile "mt.exe @"d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\RSP00000840163936.rsp" /nologo"Die temporäre Datei "d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\BAT00000940163936.bat" wird erstellt. Inhalt:
[
@echo, die Manifestressource wurde zuletzt um %TIME% am %DATE% aktualisiert > ".\debug\mt.dep"
]Erstellen der Befehlszeile """d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\BAT00000940163936.bat"""Die temporäre Datei "d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\TMP00000A40163936.tmp" wird erstellt. Inhalt:
[
1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID / 24 / RT_MANIFEST */ ".\\Debug\\MessageBox.exe.embed.manifest"
]Erstellen der Befehlszeile "rc.exe /fo".\Debug\MessageBox.exe.embed.manifest.res" "d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\TMP00000A40163936.tmp""
Die temporäre Datei "d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\RSP00000B40163936.rsp" wird erstellt. Inhalt:
[
/OUT:"D:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\Debug\MessageBox.exe" /INCREMENTAL /MANIFEST /MANIFESTFILE:"Debug\MessageBox.exe.intermediate.manifest" /DEBUG /PDB:"d:\dokumente und einstellungen\ise3u\eigene dateien\visual studio 2005\projects\messagebox\debug\MessageBox.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib".\debug\MessageBox.obj"
".\Debug\MessageBox.exe.embed.manifest.res"
]Erstellen der Befehlszeile "link.exe @"d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\RSP00000B40163936.rsp" /NOLOGO /ERRORREPORT:PROMPT"Ausgabefenster
Das Manifest wird eingebettet...
Ergebnisse
Das Buildprotokoll wurde unter "file://d:\Dokumente und Einstellungen\iSe3U\Eigene Dateien\Visual Studio 2005\Projects\MessageBox\MessageBox\Debug\BuildLog.htm" gespeichert.
MessageBox - 0 Fehler, 0 Warnung(en)@Ascharan: Ich habe auch das probiert, jedoch komme ich da auch nicht zum Erfolg. Habe vom Prinzip alle gängigen Tutorials wie man Xp-Style in sein Projekt einbindet durchgelesen, die es für WinAPI gibt.
Hoffe einer von euch weiß Rat, den ich bin nämlich mit mein Latein am Ende -.-
Hier noch zur Information, ich habe mir das SP2 runtergeladen.
Gruß Funjoy
-
Lies doch bitte die Beiträge!
Du hst InitCommonControls vergessen!
-
Hallo,
@Martin Richter
Ich habe mal bei google nach InitCommonControls() gesucht. Ich hatte aber schon mal eine Anleitung mit InitCommonControls() probiert, jedoch funktionierte es nicht. Aber vielleicht habe ich ja was falsch gemacht, jedenfalls bin ich auf folgendes Tutorial gestoßen: Add Windows XP Theme Style to your current projects.
Dort kann man sich das Beispiel (Projektordner) runterladen, das habe ich gemacht und dann einfach in Visual Studio Debugt, jedoch bekomm ich eine Fehlermeldung die ich nicht nachvollziehen kann

1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------ 1>Verknüpfen... 1>CVTRES : fatal error CVT1100: Doppelte Ressource. type:MANIFEST, name:1, language:0x0409. 1>LINK : fatal error LNK1123: Fehler bei der Konvertierung in COFF: Datei ist ungültig oder beschädigt. 1>Das Buildprotokoll wurde unter "file://d:\Dokumente und Einstellungen\iSe3U\Desktop\XPTheme\Test\Debug\BuildLog.htm" gespeichert. 1>Test - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Er sagt das eine Doppelte Ressource Datei vorhanden sei jedoch seh ich nur eine

Weiß hier einer bescheid? Achtung ich bin noch kein WinAPI freak, also idiotensichere Anleitungen zur Fehlerbehebung

Hier falls es hilft noch die BuildLog.htm Datei:
Buildprotokoll Erstellen wurde gestartet: Projekt: "Test", Konfiguration: "Debug|Win32"
Befehlszeilen Die temporäre Datei "d:\Dokumente und Einstellungen\iSe3U\Desktop\XPTheme\Test\Debug\RSP00000121123844.rsp" wird erstellt. Inhalt:
[
/OUT:".\Debug/Test.exe" /INCREMENTAL /MANIFEST /MANIFESTFILE:".\Debug\Test.exe.intermediate.manifest" /DEBUG /PDB:".\Debug/Test.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 odbc32.lib odbccp32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib".\Debug\resource.res"
".\Debug\StdAfx.obj"
".\Debug\Test.obj"
".\Debug\Test.exe.embed.manifest.res"
]Erstellen der Befehlszeile "link.exe @"d:\Dokumente und Einstellungen\iSe3U\Desktop\XPTheme\Test\Debug\RSP00000121123844.rsp" /NOLOGO /ERRORREPORT:PROMPT" Ausgabefenster Verknüpfen...
CVTRES : fatal error CVT1100: Doppelte Ressource. type:MANIFEST, name:1, language:0x0409.
LINK : fatal error LNK1123: Fehler bei der Konvertierung in COFF: Datei ist ungültig oder beschädigt.
Ergebnisse Das Buildprotokoll wurde unter "file://d:\Dokumente und Einstellungen\iSe3U\Desktop\XPTheme\Test\Debug\BuildLog.htm" gespeichert.
Test - 2 Fehler, 0 Warnung(en)Gruß Funjoy
-
weis garnet was du hast
Ressourcen werden kompiliert... Kompilierung läuft... StdAfx.cpp Kompilierung läuft... Test.cpp Linker-Vorgang läuft... Test.exe - 0 Fehler, 0 Warnung(en)
-
Ja mich wundert das auch bei allen anderen die ich kenne Funktioniert es aber bei mir nicht -.-
Gruß Funjoy
-
probier mal das !
[cpp] #include <windows.h> #include <commctrl.h> #pragma comment(lib,"Comctl32.lib") #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='*'\"") #endif LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { InitCommonControls(); MessageBox (NULL, TEXT("Hello, WinAPI!"), TEXT("HelloMsg"), MB_OK | MB_ICONQUESTION | MB_HELP); return 0; } LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_COMMAND: break; case WM_CLOSE: // Beenden der Anwendung PostQuitMessage(0); break; case WM_DESTROY: // Fenster Zerstoeren PostQuitMessage(0); break; default: break; } return FALSE; }[/cpp]
-
Hallo,
@Ascharan
Tausend Dank es hat geklappt
Interesse halber, warum klappt es bei manchen leuten einfach mit den Zeilen
#ifdef _UNICODE #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='*'\"") #endif #endifGruß Funjoy
-
Ka.
mit #ifdef _UNICODE hats bei mir auch net geklapptvieleicht kennt jochen ne antwort der kennt sich mit unicode Progs aus
-
Ascharan schrieb:
Ka.
mit #ifdef _UNICODE hats bei mir auch net geklapptIch bin zwar nicht jochen, aber damit die Anweisungen vom Präprozessor dann auch abgearbeitet (und implementiert) werden, muss natürlich vorher auch ein
#define _UNICODErein.
Und wenn das Prog schon Unicode unterstützen soll, noch zusätzlich
#define UNICODE
-
nur funktioniert der code ja nich wie er ihn verwendete
-
Wenn er zuerst auch nicht gegen die comctl32.lib gelinkt hat und auch keinen Funktionsaufruf InitCommonControls verwendet hat wird das ganze auch nicht funktionieren.
-
Hallo,
@Analog Bit
Bei einen Freund funktioniert es nur mit den Zeilen:
#ifdef _UNICODE #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='*'\"") #endif #endifOhne das er irgend wo:
#include <commctrl.h> #pragma comment(lib,"Comctl32.lib") ... InitCommonControls(); ...Defeniert ist! Das ist ja das was mich verwundert. Warum ist das bei Ihm so einfach und bei mir etwas komplizierter?!
Gruß Funjoy
-
Das geht bei mir genauso. Alerdings muss Dein Projektein UNICODE Projekt sein. das machen die äußeren ifdef's!
-
Hallo
Also ich bin der Freund/Kumpel.
Wir haben beide zum gleichen Zeitpunkt VC 2005 Exp. Edition installiert mit SP1 und PDSK.
Keiner hat was an die Einstellungen geändert. Bei mir funktioniert der Code anstandslos bei ihn nicht. Komisch
Naja jetzt funz es ja.
BTW: Tolles Forum

-
Ich habe es bei mir auch probiert, allerdings ohne VC, dafür mit [guck unten in die sigi^^]. Einmal habe ich es mit der resourcen-variante probiert, und dann mit den InitCommonControls ()-blabla. Es hat beides nicht geklappt. Liegt das daran, dass ich kein VC benutze oder woran liegt das?
Mfg Ominion
-
Der Compiler spielt keine Rolle. Das OS schaut ja nicht, mit welchem Compiler was erstellt wurde.
Du musst nur das Manifest einbetten (ist nicht zwigend nötig, geht auch mit externem Manifest) und die passende Resource-Typ/ID vergeben.
-
na gut, dann probiere ich das nochmal...mal sehen, aber erstmal danke

Mfg Ominion