GUI Programmierung - WinAPI, MFC oder Toolkit



  • @Glühbirne: Irgendwie Bullshit was Du da alles geschrieben hast - klassisches ich nehme Assembler weils a.) am schnellsten ist und b.) ich dann genau weiss was passiert.



  • theta schrieb:

    @Glühbirne: Irgendwie Bullshit was Du da alles geschrieben hast - klassisches ich nehme Assembler weils a.) am schnellsten ist und b.) ich dann genau weiss was passiert.

    So kann man es tatsächlich auch halten, nur dauert dann eben das Programmieren ein bisschen länger. Ich persönlich fahre ganz gut damit, aber wie ich oben bereits geschrieben habe, muss man das selbst entscheiden. Wenn du schnell programmieren willst, solltest du eine Bibliothek nehmen, wenn du eine schnelle Ausführungsgeschwindigkeit und Kenntnisse über die Materie bekommen willst, nutze direkt die API.



  • Glühbirne schrieb:

    Der direkte Zugriff auf die Win-API ist immer noch die schnellste Methode, Windows-Programme zu schreiben.

    Nur in Hinsicht auf die Performance, nicht aber bezogen auf die Entwicklungszeit. Und letztere ist zumindest in Softwareunternehmen meist wesentlich entscheidender als das letzte Fünkchen Performance.

    Glühbirne schrieb:

    Aber zusätzlich gewährt mir das Wissen über alle Funktionen und ihre Parameter einen mächtigen Zugriff, den die MFC nur über Umwege - und wieder über die API - bietet.

    Die MFC ist nur ein relativ dünner Wrapper um die WinAPI, und lässt sich auch mit dieser ohne Probleme kombinieren, wo nötig. Und auch andere Frameworks erlauben dies.

    Wenn man nicht nur kleine Programme oder Tools schreibt, würde ich davon abraten für die Oberfläche auf die Windows API zu setzen (Mir sind auch nur sehr wenige Firmen begegnet die wirklich noch die WinAPI direkt verwenden, abgesehen von vereinzelten Aufrufen).



  • Gibt es irgendwo eine Übersicht mit welchen GUI-Toolkits die gängigen Windows-Applikationen geschrieben worden sind? Ich denke da bspw. an:

    Firefox, Opera, Office, Photoshop, FileZilla, Google Earth, iTunes, Nero, Notepad++, UltraEdit, VLC Player, Trilian, Skype, weiß der Teufel was noch so modern ist 🙂

    MfG SideWinder



  • r0w schrieb:

    Undzwar habe ich mich gefragt, ob die GUI Programmierung basierend auf WinAPI, sprich WinMain, CreateWindow und konsorten noch aktuell ist, oder aufgrund der vielen Arbeit mittlerweile schon komplett hinterher ist und man heutzutage nurnoch auf MFC oder eben seperate Toolkits wie Qt, GTK etc. zurückgreift.

    Du solltest dich vor allem erstmal fragen ob du wirklich C++ für Anwendungsentwicklung verwenden willst. Wenn du nicht einen ganzen Haufen guter Gründe hast warum es um jeden Preis C++ sein muss gibts vermutlich besser geeignete Sprachen, z.B. C# in Kombination mit WPF.



  • Und damit wurde der Stein des seit zwei Ewigkeiten andauernden Kampfes der Paradigmen und ihrer Anhänger (erneut) zum Rollen gebracht...



  • dot schrieb:

    Du solltest dich vor allem erstmal fragen ob du wirklich C++ für Anwendungsentwicklung verwenden willst. Wenn du nicht einen ganzen Haufen guter Gründe hast warum es um jeden Preis C++ sein muss gibts vermutlich besser geeignete Sprachen, z.B. C# in Kombination mit WPF.

    Vielleicht damit die Software auch auf OSX und Linux läuft? Und nein, Mono zählt nicht.



  • Script0r schrieb:

    dot schrieb:

    Du solltest dich vor allem erstmal fragen ob du wirklich C++ für Anwendungsentwicklung verwenden willst. Wenn du nicht einen ganzen Haufen guter Gründe hast warum es um jeden Preis C++ sein muss gibts vermutlich besser geeignete Sprachen, z.B. C# in Kombination mit WPF.

    Vielleicht damit die Software auch auf OSX und Linux läuft? Und nein, Mono zählt nicht.

    Als einziger Grund wäre das ein schlechtes Argument, weil es auch mit Java oder anderen Progr.-sprachen geht.



  • Gegenfrage: Welche Gründe hast du denn ihm davon abzuraten? Du rätst ihm zwar davon ab, begründest dies aber mit keinem Wort.

    Ich habe meine ersten Anwendungen auch in C++ geschrieben und bin damit ganz gut gefahren. -> Klar sind Sprachen wir C# wesentlich einfacher und man hat schneller ein Ergebnis. Dafür müssen für C# Beispielsweise bestimmte Grundvorraussetzungen erfüllt sein. - Die Anwendung läuft nicht ohne .NET Framework, auf Maschinen ohne Windows muss unter Mono ausgeführt werden ...

    C++ hingegen kann für alle mir bekannten Plattformen kompiliert werden und läuft. (Esseidenn man baut sein Programm auf die WinAPI auf. Aber selbst dann kanns Linux mit Wine (Suboptimal).)



  • Entschuldigt bitte, aber die Frage ob ich auf eine andere Sprache umsteige stellt sich nicht und ist auch nicht Thema. Ich möchte lediglich wissen welche der Optionen Aktuell und Zeitgemäß ist.



  • Auf jeden Fall ist die direkte WinAPI-Programmierung nicht zeitgemäß.

    Ich sage Dir warum:

    1. Es gibt immer schlechtere Doku dazu, weil es nicht mehr Mainstream ist.

    2. Der Aufbau des Message-Systems der WinAPI basiert auf der Annahme, daß die ausführende Software ein C-Programm ist. Wenn Du nicht sehr gut C++ programmieren kannst, und damit in der Lage bist Dir ein sauberes Framework zur Verarbeitung der Messages zu strukturieren, wird der aus der Kombination C++ mit WinAPI entstehende Code ein furchtbarer Spaghetti-Verhau.

    3. Alle bekannten GUI-Libs kapseln diesen Teil der Message-Verarbeitung bereits unter C++, es macht keinen Sinn das neu zu erfinden.

    4. MFC ist relativ alt, es gibt nur noch wenig Doku dazu. Aber für das Programmgerüst wäre sie ok, wenn Du bißchen "fancy" werden willst kannst Du die Control-Elemente der MFC direkt mit WinAPI traktieren, damit sie z.B. farbig werden.

    5. wxWidgets würde mir auch noch als Alternative dazu einfallen. Qt scheint aber auf dem Buchmarkt etwas besser dokumentiert zu sein.



  • SideWinder schrieb:

    Gibt es irgendwo eine Übersicht mit welchen GUI-Toolkits die gängigen Windows-Applikationen geschrieben worden sind? Ich denke da bspw. an:

    Firefox, Opera, Office, Photoshop, FileZilla, Google Earth, iTunes, Nero, Notepad++, UltraEdit, VLC Player, Trilian, Skype, weiß der Teufel was noch so modern ist 🙂

    Naja. Gerade die größeren Anwendungen kommen ja bestimmt mit eigenen Abstraktionslayern. Daher ist das sicher schwer zu sagen. Ist eine Anwendung eine WinAPI- oder Cocoa- oder GTK-Anwendung, wenn das alles hinter einem eigenen Abstraktionslayer steckt? Siehe zB Adam&Eve für Photoshop oder XUL von Firefox.



  • Hi,
    ich hab da auch noch eine Frage zum Thema.

    In C++ hab ich eine Konsolenanwendung geschrieben,
    die Bilder mit der OpenCV ein bisschen bearbeitet.

    Jetzt möchte ich auch anstatt des "Dos Fensters" eine
    grafische Oberfläche haben.

    Die Frage ist jetzt wie man so ein Programm in eine
    grafische Oberfläche bekommt.

    MfG, Benni


Anmelden zum Antworten