XP Styles mit MFC in VS2008 (c++)



  • Hallo,

    ich bin zu blöd. glaub ich...

    Ich habe hier eine ganz normale MFC Application mit Dialog (CDialog, Unicode). Dort möchte ich gerne die XP Styles aktivieren. Bis vor kurzem nutze ich noch VC6 und dort mußte man einige Klimmzüge machen (die hier alle nicht funktionieren).

    Manifest wird ja standardmäßig installiert.

    Per google habe ich viele Anleitungen gefunden, aber gehen tuts nicht. Wie macht Ihr das? Oder liegt es an MFC?

    Stefan



  • Ich hab dazu im VS2005 immer folgenden Code verwendet (bin mir nicht sicher ob's auch im 2008er noch klappt):

    #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
    


  • Hallo,

    in der stdafx.h?

    #include <commctrl.h> führt zu einigen Syntax-Fehlern.

    Wenn ich das auskommentiere hats keine Funktion.

    Stefan


  • Mod

    Ja!
    Bist Du sicher, dass Du vor der Commctrl.h auch windows.h included hast?



  • Hallo Martin,

    "fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>"

    Wenn ich das ganze weiter Unten hinzufüge scheint es zu funktionieren, aber ohne die erhofte Wirkung. Ich suche mal weiter..

    Benutzt denn Niemand mehr VS2008 mit MFC?

    Stefan



  • Benutzt denn Niemand mehr VS2008 mit MFC?

    Sicher ich denke es werden genügend nutzen, aber dien problem kann ich net nachvollziehe, da ich einfach ein neues Projekt erstelle und da is schon alles eingestellt.


  • Mod

    1. Wenn Du die MFC benutzt musst Du weder die windows.h noch die commctrl.h includen.
    Da genügt der include von afx.h bzw. afxwin.h
    2. Wenn man eine andere Windows API include Datei zusätzlich benötigt muss immer zuerst windows.h included werden!



  • CTecS schrieb:

    Sicher ich denke es werden genügend nutzen, aber dien problem kann ich net nachvollziehe, da ich einfach ein neues Projekt erstelle und da is schon alles eingestellt.

    Hallo,
    ich nochmal.

    Ich starte Visual Studio 2008 (VC9) unter Vista 64Bit und erstelle ein neues Projekt.
    "MFC"->"MFC Application"
    "Dialog based"
    "use unicode libs" ist aktiviert
    und später
    "Active X" und "Common Control manifest"
    Ich füge ein Progress-Bar hinzu und setzt ihn auf 50% und der Balken ist blau 😞

    Hat da noch jemand einen Tipp?


  • Mod

    Hast Du das Projekt evtl. auf "nicht Unicode" umgestellt. Dann werden die ComCtl 6.0 Manifeste nicht eingebebunden.
    Siehe stdafx.h



  • Hallo Martin,

    nee... viel einfacher... ich hatte das design auf klassisch gestellt und dann zeigt windows das gar nicht an....

    ohmmmm

    Stfan


Anmelden zum Antworten