VORSCHLAG FÜR FAQ: GUI Programmierung mit C++



  • Mein Vorschlag:

    GUI Programmierung
    http://www.geocities.com/SiliconValley/Vista/7184/guitool.html

    ⚠

    • Ohne fundierte C++ Kentnisse ist es nicht zu empfehlen ein GUI Toolkit zu benutzen. Lieber erst vernünftig C++ lernen!
    • Wenn dir die Informationen nicht ausreichen, welches Toolkit dir am besten liegt, solltest du dich auf den Projekt Homepages informieren.

    Platform übergreifend

    • CLX - Die CLX ist ein von Borland entwickeltes Framework, dass für Linux und Windows verfügbar ist. Das Framework bietet ein Widget System auf Basis des Qt Toolkits an (siehe Qt weiter unten). Das Framework wird mit dem Borland C++ Builder und Kylix ausgeliefert und ist für C++ und Objekt Pascal (Delphi) verfügbar. Die CLX gibt es in einer OpenSource Version als FreeCLX. (siehe VCL, VCL/CLX-Forum)
    • GTK+ - GTK+ ist ein sehr populäres Widget System, welches unter X11 (Unix/Linux/BSD), Linux Framebuffer, MacOS X und Windows läuft. GTK+ ist in einem Objekt orientiertem C Stil geschrieben und unter der LGPLizenz frei verfügbar. Es existieren auch verschiedene Bindings für andere Sprachen, wie C++ (siehe GTKmm), C#, Ruby, PHP, Perl, Pyhton uvm.
    • GTKmm - GTKmm ist eine C++ Widget Library die auf GTK+ (siehe oben) aufbaut. GTKmm ist im Gegensatz zu den meisten Widget Systemen in einem sehr modernen C++ geschrieben.
    • FLTK - FLTK ist ein C++ Widget System, dass unter MacOS X, X11 (Unix/Linux/BSD) und Windows läuft. Dabei handelt es sich um eine Art ThinLayer über den unterliegenden Systemen, so dass man auch direkte Funktionen des unterliegenden Systems anwenden kann. FLTK steht der LGPLizenz.
    • FOX - Das FOX Toolkit ist ebenfalls ein C++ Widget System, dass für Windows und X11 (Unix/Linux/BSD) verfügbar ist. Das System benutzt aber sehr viele Macros!
    • Qt - Qt ist ein C++ Framework, dass für Windows, X11 (Unix/Linux/BSD), MacOS X und Embedded Systeme verfügbar ist. Qt gibt es einmal in einer freien GPL Version (wobei die Windows GPL Version leider nicht mehr aktuell ist) und unter einer kommerziellen Lizenz.
    • VCF - Die VCF ist eine weitere Platform unabhängige C++ Library. Sie unterstützt MacOSX, Windows und X11 (Unix/Linux/BSD). Die VCF ist wie GTKmm in sehr modernem C++ geschrieben.
    • wxWidgets (früher wxWindows) - wxWidgets ist ein C++ Framework, dass nativen Widget Support anbietet und auf Basis von Windows, GTK+, Motif, Mac OS, MGL, OS/2 und einigen Embedded Systemen implementiert ist. Das System wirkt relativ MFC (siehe unten) ähnlich.

    MacOS X

    • Cocoa - Cocoa ist das native Framework für MacOS X. Das System ist ein Nachfolger des NeXTStep/OpenStep Systems (siehe auch GNUStep weiter unten). Es ist in Objective-C geschrieben, aber auch Integration in C++ (Man kann Objecive-C und C++ Code sogar in einer Datei kombinieren!), Java, AppleScript uvm.

    Unix/Linux/BSD/X11

    • GNUStep - GNUStep ist ähnlich wie Cocoa/MacOSX ein auf NeXTStep/OpenStep basierendes System und in Objective-C entwickelt. Aber genau wie bei Cocoa kann man direkt Objective-C und C++ mischen. Auch Anbindungen für Java und Ruby sind vorhanden. GNUStep steht unter der GPL/LGPL
    • OpenMotif/Motif - Motif ist ein vom IEEE 1295 Standard spezifiziertes Widget Framework. Motif war das erste Unix Widget System. Es ist einmal als kommerzielle Variante (Motif) erhältlich und einmal als OpenSource-Variante (nicht OSI Konform), die eine kostenlose Benutzung auf einer OpenSource Platform erlaubt.

    Unix/Linux-FAQ: GUI Programmierung (X, KDE/QT, GNOME/GTK)
    GUI Toolkits for The X Window System

    Windows

    • Avalon - Avalon ist das neue native Widget System für die kommende Windows Version (Longhorn). Avalon basiert auf dotNET.
    • MFC - Die MFC ist ein von Microsoft entwickeltes C++ Framework, welches direkt auf der WinAPI basiert. Die MFC gibt es nur in Verbindung mit dem Visual Compiler oder dem Borland Compiler. Die MFC wird aber in Zukunft nicht mehr von Microsoft weiter entwickelt! (siehe auch MFC Forum)
    • VCL - Die VCL ist eine Library von Borland, die mit dem Borland C++ Builder und Delphi zusammen vertrieben wird. Dabei wurde auch die Entwicklung der VCL eingestellt und zum einen durch die Platformunabhängige und auf Qt basierende CLX Library (siehe oben) und zum anderen im BuilderX durch eine wxWidgets (siehe oben) basierene Lösung ersetzt <-- weiss ich nicht genau (siehe VCL/CLX-Forum)
    • WinAPI - Die WinAPI ist die native Schnittstelle von Windows und in C gehalten. Aber auch die WinAPI wird in Zukunft nicht mehr weiter entwickelt und durch eine dotNET Lösung ersetzt (siehe Avalon)
    • WindowsForms - Die WindowsForms (oder auch WinForms) sind eine dotNET Library, zur Widget Programmierung. Die vorhandenen WindowsForms Tools sind aber auf C# ausgerichtet. Die WinForms gehören aber nicht zur Core Library von dotNET und sind eine Microsoft Erweiterung. Deswegen sind die WinForms nicht platformunabhängig und eine Unterstützung von alternativen dotNET Implementierung ist nicht sicher oder 100% kompatibel.


  • Eine Menge. Dafür kenne ich keine ernsthaftes Projekt, was MFC, VCL, CLX oder den Rest benutzt

    hehe.

    Werd aber was ähnliches bald schreiben.

    Na dann bin ich mal gespannt.
    Ich hab irgendwie das Gefühl, dass MS dabei nicht gut wegkommen wird....

    Vielleicht sollten wir dich am Schreibtisch festbinden, den Kopf Richtung Monitor fixieren und Streichhölzer zwischen die Augenlieder klemmen.
    Dann ne 2 wöchige MS- Produktpräsentation abspielen.



  • Na dann bin ich mal gespannt.

    hab ich gerade gepostet. Bitte kritisieren.

    Vielleicht sollten wir dich am Schreibtisch festbinden, den Kopf Richtung Monitor fixieren und Streichhölzer zwischen die Augenlieder klemmen.
    Dann ne 2 wöchige MS- Produktpräsentation abspielen.

    zu viel Uhrwerk Orange gesehen? Dabei bin ich ja gar nicht mehr so schlimm!



  • Marc++us schrieb:

    kingruedi schrieb:

    Eine Menge. Dafür kenne ich keine ernsthaftes Projekt, was MFC, VCL, CLX oder den Rest benutzt 🙄

    *lol*

    😃



  • hab ich gerade gepostet. Bitte kritisieren.

    oh, hatte ich nicht gesehen.
    Sieht ja sehr sachlich aus und MS ist auch drin.

    Dabei bin ich ja gar nicht mehr so schlimm!

    hehe



  • IMHO fehlen Details über die verwendete Sprache. Vielleicht interessierts ja wen, dass weder die VCL noch Windows Forms wirklich C++ verwenden 😉



  • kingruedi schrieb:

    Mein Vorschlag:[...]

    In meinen Augen dürfte ruhig etwas mehr ins Detail gegangen werden. BT hat das Ganze etwas detaillierter behandelt, was mir eigentlich recht gut gefallen hat. Auch wenn er zum Thema MFC etwas gepatzt hat (o;



  • Vom inhaltlichen her sind die Vorschläge ja ganz gut, aber irgendwie fehlt mir eben der Bezug zum Thema.

    Nach dem Lesen eurer Artikel kann ich zwar viele Libraries aufzählen aber mich trotzdem noch nicht entscheiden welche Library ich nun letzten Endes benützen soll.

    Vorschläge:

    - Einsatzgebiete von Libraries
    - Eventl. Beispielprojekte (OpenSource?)

    MfG SideWinder



  • SideWinder schrieb:

    Nach dem Lesen eurer Artikel kann ich zwar viele Libraries aufzählen aber mich trotzdem noch nicht entscheiden welche Library ich nun letzten Endes benützen soll.

    hmm... das muss letzten Endes auch jeder fuer sich entscheiden. Man kann zwar eingrenzen, was fuer APIs in Frage kommen (will ich eine Crossplattform-Lib, will ich RAD-Tools, will ich eine OpenSource-Lib, laeuft es mit meinem Compiler...), aber es ist dann doch Geschmacksache, ob man z. B. zu Qt oder zu GTK greift.

    *g* und ausserdem: als ich geschrieben hab, VCL ist am einfachsten fuer Neueinsteiger, war das gleich wieder zu subjektiv.
    Wenn man ins andere Extrem geht und lediglich Features aufzaehlt, ist dem Noob auch nicht viel geholfen. <== was jetzt auch mein Kritikpunkt an kingruedi's Beitrag waere. Gut find ich hingegend, dass er besser auf die Lizenzierung eingegangen ist. 🙂

    EDIT: ach ja, ein Beispiel vuer ein VCL-Projekt waere z. B. CloneCD 🙂



  • kingruedi schrieb:

    Und wieviele kennst du, die Qt, GTK etc. benutzen?

    Eine Menge. Dafür kenne ich keine ernsthaftes Projekt, was MFC, VCL, CLX oder den Rest benutzt 🙄

    Ehm... meine Aussage bezog sich mehr darauf, dass ich kein ernsthaftes Projekt kenne, das die Xlib benutzt. Projekte auf Qt- und GTK-Basis kenn ich natuerlich auch zur Genuege. (Der Vorwurf an mich war ja, dass ich nicht auf die Xlib eingangen bin (du uebrigens auch nicht 😃 )).



  • SideWinder schrieb:

    - Einsatzgebiete von Libraries

    öhm, dass ist wohl bei einem GUI Framework so ziemlich gleich 🙂

    SideWinder schrieb:

    - Eventl. Beispielprojekte (OpenSource?)

    Success Stories sind ja idr. auf den Homepages zahlreich verlinkt. Aus dem Grund habe ich ja auch immer auf die Projekt Seiten verlinkt.

    operator void schrieb:

    IMHO fehlen Details über die verwendete Sprache. Vielleicht interessierts ja wen, dass weder die VCL noch Windows Forms wirklich C++ verwenden 😉

    jo, dass sollte ich noch einbauen. Die VCL ist in Objekt Pascal geschrieben?

    junix schrieb:

    In meinen Augen dürfte ruhig etwas mehr ins Detail gegangen werden.

    was für Details?

    @Blue-Tiger
    wenn Librarys zählen kenn ich da einige, du könntest ja zB. alle von der Liste nehmen, die X11 unterstützen :p :rolleyes 🙂



  • kingruedi schrieb:

    junix schrieb:

    In meinen Augen dürfte ruhig etwas mehr ins Detail gegangen werden.

    was für Details?

    Wie wärs mit einem etwas grosszügigeren Beschrieb? BT hat sich da wesentlich mehr mühe gegeben die Bibliotheken zu beschreiben. Dein Artikel lässt sich im Wesentlichen reduzieren auf "XYZ ist eine Library mit der man Fensterchen auf System Y machen kann." Hilft ja ungemein.

    -junix



  • kingruedi schrieb:

    @Blue-Tiger
    wenn Librarys zählen kenn ich da einige, du könntest ja zB. alle von der Liste nehmen, die X11 unterstützen :p :rolleyes 🙂

    Uhm... reden wir aneinander vorbei? 😃

    *seufz* alles was ich wollte war einfach sagen, dass kein Mensch freiwillig GUIs direkt mit der Xlib programmiert. So, basta, jetzt ist das Thema endgueltig durch 😃



  • Wie wärs mit einem etwas grosszügigeren Beschrieb? BT hat sich da wesentlich mehr mühe gegeben die Bibliotheken zu beschreiben. Dein Artikel lässt sich im Wesentlichen reduzieren auf "XYZ ist eine Library mit der man Fensterchen auf System Y machen kann." Hilft ja ungemein.

    wenn du mir noch nicht mal sagen kannst was dir fehlt, dann kann ich das auch nicht hinzu schreiben und muss deinen Beitrag einfach als genörgel abhaken. Übrigens halte ich es auch nicht für Sinnvoll mehr zu schreiben, da man sich ja auch, wie ich bereits geschrieben habe auf den Projekt-Homepages informieren kann. Inklusive SuccessStories, API Überblick, Tutorials und Feature Liste.

    Das alles aufzunehmen würde eher dafür sorgen, dass ich nach jedem Release einer Library die FAQ edistieren darf.

    @Blue-Tiger
    🙂



  • kingruedi schrieb:

    wenn du mir noch nicht mal sagen kannst was dir fehlt, dann kann ich das auch nicht hinzu schreiben und muss deinen Beitrag einfach als genörgel abhaken. Übrigens halte ich es auch nicht für Sinnvoll mehr zu schreiben, da man sich ja auch, wie ich bereits geschrieben habe auf den Projekt-Homepages informieren kann. Inklusive SuccessStories, API Überblick, Tutorials und Feature Liste.

    hmm... du kennst selbst die Faulheit der Neulinge hier im Board: ich fuerchte (bzw. kann mir gut vorstellen), dass viele Neulinge dann trotz FAQ immer noch Threads eroeffnen a la "was soll ich jetzt lernen?/da gibts so viele APIs, welche ist die Beste fuer mich?/ich moecht eure Meinung hoeren, die Tookit-Homepages sind mir zu subjektiv"...

    Klar kann die Frage(n) niemand richtig beantworten, aber ich wuerd folgende Hinweise auf jeden Fall noch mit in den FAQ-Eintrag aufnehmen:

    - viele (die meisten/alle?) Toolkits verlangen fundiertes Verstaendnis von C++, also besser das erst gut lernen
    - es gibt nicht DAS BESTE Toolkit, ist letztenendes auch Geschmackssache
    - die Links zu den Toolkits sind da, um benutzt zu werden, dort gibts dann genug Hinweise, Tutorials etc. ( <= expliziter Hinweis, schliesslich gibts genug Fragesteller, die selbst fuer Google zu faul sind)

    Das ausdruecken persoenlicher Praeferenzen/Wertungen ist IMO auch nicht ganz falsch, solang sie eindeutig gekenntzeichnet sind: wenn die Noobs zu faul/unwissend/unsicher sind, selbst zu entscheiden, dann muessen ihnen eben Entscheidungshilfen angeboten werden.

    just my 2 cents 🙂



  • jo, so was könnte man noch in den FAQ Beitrag setzen. Aber ansonsten finde ich es nicht gut, da eigene Preferenzen einzubauen.



  • kingruedi schrieb:

    jo, so was könnte man noch in den FAQ Beitrag setzen. Aber ansonsten finde ich es nicht gut, da eigene Preferenzen einzubauen.

    Statt eigene Preferenzen hinzuzudichten wäre es aber nicht so schlecht den allgemeinen Aufbau einer Lib zu beschreiben.

    MfG SideWinder



  • wie soll ich in den kleinen FAQ Beitrag den Aufbau einer Library unterbringen?



  • Einen größeren FAQ-Beitrag daraus machen?

    MfG SideWinder



  • Einen größeren FAQ-Beitrag daraus machen?

    rofl 😃


Anmelden zum Antworten