Win32 GUI - Wie Design auf Win7 anheben ?



  • Einen schönen Abend wünsche ich.

    Ich habe die Tage mich mit der GUI Erstellung durch die jeweiligen APIs auseinander gesetzt.
    Das funktioniert auch alles ganz gut, habe mein Fenster erstellt, die Controls plaziert und reagiere entsprechend auf diverse Messages.
    Das einzige was mich doch ein bisschen bei dem ganzen stört, ist die Tatsache das die GUI mich an Windows 2000 erinnert und das alles doch sehr veraltet aussieht.

    Wie kann ich in meiner GUI, die Buttons, Listbox etc. im Windows7 Style oder höher benutzen ?

    VG





  • Der Vollständigkeit halber - es geht auch ohne externes Manifest:

    #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
    

    Kopieren und im Code einfügen.



  • Das steht auch in dem verlinkten Artikel. 😉



  • @Th69 Du hast recht, das habe ich überlesen. Nun stehts eben ein weiteres Mal hier.



  • Genau, doppelt hält besser.



  • Dieser Beitrag wurde gelöscht!


  • Danke für die Antworten ich werde mir mal den verlinkten Artikel durchlesen.

    @yahendrik sagte in Win32 GUI - Wie Design auf Win7 anheben ?:

    Der Vollständigkeit halber - es geht auch ohne Manifest:

    #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
    

    Kopieren und im Code einfügen.

    Wenn ich den Debugger dann starte, ist die GUI aufjedenfall etwas moderner.
    Kompiliere ich aber und starte dann die EXE, ist alles nach wie vor auf Windows 2000 hängen geblieben.



  • @Ertyty Ich habe mich noch einmal korrigiert, es geht ohne externes Manifest.
    Was steht denn bei dir unter den Linkereinstellungen -> Manifest?
    Dies sollte generiert werden. Du kannst es dir auch einmal anschauen (der genaue Pfad kann dort ebenfalls angegeben werden), der Inhalt sollte anschließend wie im Link beschrieben sein.



  • @yahendrik sagte in Win32 GUI - Wie Design auf Win7 anheben ?:

    Der Vollständigkeit halber [...]

    ähm.

    #pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    

    sollte reichen.


  • Mod

    Ist das Manifest Teil dfer Ressourcen.
    Also Resource Viewer öffen oder die EXE in VS öffnen.
    Nachsehen ob das Manifest auch drin steht...



  • Also wenn ich es mit der folgenden Zeile probiere:

    #pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    

    funktioniert es ab und zu im Debugger, als auch als kompilierte EXE. Wieso es mal geht und mal nicht verstehe ich nicht. Ich muss so oft kompilieren bis die Controls den neuen Style haben.

    Mit einem externen Manifest funktioniert es grundsätzlich überhaupt nicht.
    Manifest Datei wurde erstellt und eingebunden über eine Ressource Datei:

    CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"
    

    EXE habe ich in einem Hex Editor geöffnet und Manifest ist hinterlegt.



  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!

  • Mod

    @Ertyty
    "Ab und zu" geht nicht bei Manifest...
    Und Debug und Release haben hier keinen Einfluss.

    Wenn es nicht mit einem externen Manifest geht, dann ist das Manifest kaputt, oder es gibt ein internes Manifest...
    Wenn Du die pragma Direktive nutzt benötigst KEINE Resourcedateiänderung!

    Ich würde Dir raten nicht "herumzuprobieren" sondern konsequent einen Ansatz zu nutzen...


  • Mod

    @Swordfish

    OT: Wer sich so im Ton vergreift muss mit solch einer Lösung rechnen... ich sehe als Mod Dein Geschreibsel...

    Ich war es dennoch nicht, der Deine Kommentare gelöscht hat, aber ich unterstütze sowohl, das Löschen, als auch die Sperre für Dich!



  • @Martin-Richter sagte in Win32 GUI - Wie Design auf Win7 anheben ?:

    @Ertyty
    "Ab und zu" geht nicht bei Manifest...
    Und Debug und Release haben hier keinen Einfluss.

    Wenn es nicht mit einem externen Manifest geht, dann ist das Manifest kaputt, oder es gibt ein internes Manifest...
    Wenn Du die pragma Direktive nutzt benötigst KEINE Resourcedateiänderung!

    Ich würde Dir raten nicht "herumzuprobieren" sondern konsequent einen Ansatz zu nutzen...

    Gab tatsächlich ein internes Manifest.
    Alle Einstellungen nun korrekt gesetzt und siehe da mit der folgenden Zeile habe ich eine 100% Quote:

    #pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    

    Danke für die Unterstützung !


Anmelden zum Antworten