Die endlose Geschichte der GUI-Libraries
-
Hallo zusammen! Immer wieder tauchen hier im Forum Fragen zu GUI-Libs auf, Anfänger suchen sogar verzweifelt sowas in der C++-Standardlibrary. Also habe ich mich gestern abend mal hingesetzt und habe versucht mal die aktuellen Libs auszuprobieren. Ich muß sagen: der Horror!
GTKmm gefällt mir laut Doku sehr gut, GTK in der aktuellen Version sieht sogar auf Windows sehr gut aus. Also habe ich mich daran gemacht eine Entwickler-Lib runter zu laden. 1. es gibt mehrere Distributionen, die man nicht mal auf der eigentlichen gtkmm-Website findet. 2. Die GLADE for Windows hatte komischerweise nicht mal Header und LIBs oder CPPs. Nur die DLLs und den Theme-Selector. Obwohl es die Entwickler-Installation war. Sehr merkwürdig...
Dann habe ich auf einer der Distri-Seiten noch einen Hinweis gesehen, das die aktuelle GTKmm als VC++7.1 Compilat mit einem Runtime-Error garantiert abstürzt. Dieser Hinweis war in rot und direkt unter dem Downloadlink. Der Bug wird dem VC++7.1 zugeschrieben, welcher auch MS bekannt sein soll und in VC++8.0 behoben wird. Fazit: Praktisch unnutzbar, wenn man nicht MinGW benutzt!
Ich habe mehrere Distri-Seiten besucht, so das ich nicht mehr weiß wo was stand. Für Windows-Entwickler irgendwie alles sehr unrund und kein roter Faden zu erkennen.
wxWidgets habe ich damals mal probiert, wurde hier auch schon öffters behandelt. Es hat seine Vor- und Nachteile. wxWidgets ist sehr leistungsfähig um komplette Anwendungen zu entwickeln. Hat aber ein unschönes C++-Design. Wer Kohle hat, greift zu Qt, welches ich auch schon ausprobiert habe und einfach zu benutzen ist.
Jetzt kommt aber der Hammer (im positiven Sinne): FOX-Toolkit wurde hier im Forum vor ca. 1 oder 2 Monaten zum ersten und einzigen Mal genannt. Ich habe folgendes gemacht: http://www.fox-toolkit.org angesurft. Installanweisung überflogen (easy!). Windows-Distribution runter geladen und entpackt (ZIP). VC++7.1 angeschmissen, fox-Toolkit-Projektmappe geladen. Eines der Beispiele gebaut und gestartet uuuuuund es funktioniert! Es funktioniert!!! Dann alle anderen Beispiele (auch OpenGL-Beispiele) gebaut und gestartet... locker flockig geschmeidig!
Die Fox-Klassen sind logisch, intuitiv, sauber, keine Makros, VC++-IDE kann deshalb locker durchnavigieren und Intellisence anbieten. Super C++-Design! Alles läuft rund und sauber. Auch Anfänger können mit einfachen und minimalen Arbeitsschritten FOX-Toolkit zum Laufen bekommen. Idiotensicher!
FOX-Toolkit ist übrigens nicht nur auf Windows sondern auch für Linux und diverse Unices verfügbar. FOX-Toolkit sieht aber auf allen Systemen gleich aus, Windows-like. Weiterhin ist die Library auch als Binary sehr klein... jedenfalls keine 10 MB.
Man kann auf der fox-tookit Seite einen Calculator der mit der Lib statisch verlinkt ist downloaden: 512kb! Denke aber mal, das nur verlinkt wird, was benötigt wird. Mußte irgendwann ins Bett, werde mich damit weiter beschäftigen. Einfach mal ausprobieren. Der Calculator ist auch in der Entwickler-Distri als Sourcecode dabei.
Ich bin wirklich begeistert vom FOX-Toolkit.
Diesem Projekt wird hier zu wenig Beachtung geschenkt, wie ich finde.
-
schon mal fltk probiert? --> http://www.fltk.org/
das hat bei mir auch auf anhieb geklappt. hab' aber leider nicht viel mit rumgespielt.
-
Fox-Toolkit hat mit Sicherheit kein super C++-Design! Und das mit "keine Makros" stimmt auch nicht. Was sind denn FXDEFMAP, FXMAPFUNC, FXIMPLEMENT usw.?
Markos
-
Artchi schrieb:
Wer Kohle hat, greift zu Qt, welches ich auch schon ausprobiert habe und einfach zu benutzen ist.
Anmerkung hierzu:
http://www.trolltech.com/newsroom/announcements/00000192.html?cid=20
-
Artchi schrieb:
Dann habe ich auf einer der Distri-Seiten noch einen Hinweis gesehen, das die aktuelle GTKmm als VC++7.1 Compilat mit einem Runtime-Error garantiert abstürzt. Dieser Hinweis war in rot und direkt unter dem Downloadlink. Der Bug wird dem VC++7.1 zugeschrieben, welcher auch MS bekannt sein soll und in VC++8.0 behoben wird. Fazit: Praktisch unnutzbar, wenn man nicht MinGW benutzt!
Wo ist dieser Hinweis?
Ich habe gtkmm noch nicht wirklich benutzt, aber die Beispiele lassen sich mit Visual C++ 7.1 einwandfrei kompilieren und ausführen (gtkmm-2.6.1).
-
cd9000 schrieb:
Wo ist dieser Hinweis?
Ich habe gtkmm noch nicht wirklich benutzt, aber die Beispiele lassen sich mit Visual C++ 7.1 einwandfrei kompilieren und ausführen (gtkmm-2.6.1).Auf http://www.pcpm.ucl.ac.be/~gustin/win32_ports/gtkmm.html bei Important Warning.
-
Artchi schrieb:
GTKmm gefällt mir laut Doku sehr gut, GTK in der aktuellen Version sieht sogar auf Windows sehr gut aus. Also habe ich mich daran gemacht eine Entwickler-Lib runter zu laden. 1. es gibt mehrere Distributionen, die man nicht mal auf der eigentlichen gtkmm-Website findet.
[...]
Dann habe ich auf einer der Distri-Seiten noch einen Hinweis gesehen, das die aktuelle GTKmm als VC++7.1 Compilat mit einem Runtime-Error garantiert abstürzt. Dieser Hinweis war in rot und direkt unter dem Downloadlink. Der Bug wird dem VC++7.1 zugeschrieben, welcher auch MS bekannt sein soll und in VC++8.0 behoben wird. Fazit: Praktisch unnutzbar, wenn man nicht MinGW benutzt!Die "offizielle" Distribution ist AFAIK die auf http://www.pcpm.ucl.ac.be/~gustin/win32_ports/
Warum die nicht auf www.gtkmm.org verlinkt ist, weiss ich nicht. Und die dortige Warnung spricht von
some gtkmm programs, built on win32 using the MSVC.Net 2003 compiler, might crash [...]
The gtkmm and MSVC developers are aware of this bug, which should/will hopefully be fixed in Visual Studio 2005 beta 2.Klingt also bei weitem nicht so schlimm, wie du's darstellst.
Jetzt kommt aber der Hammer (im positiven Sinne): FOX-Toolkit wurde hier im Forum vor ca. 1 oder 2 Monaten zum ersten und einzigen Mal genannt.
Wird seit Ewigkeiten in der Rund um die Programmierung-FAQ zur GUI-Programmierung erwaehnt
Eines der Beispiele gebaut und gestartet uuuuuund es funktioniert! Es funktioniert!!! Dann alle anderen Beispiele (auch OpenGL-Beispiele) gebaut und gestartet... locker flockig geschmeidig!
<Ironie>
Sag bloss, die mitgelieferten Beispiele funktionieren
</Ironie>Die Fox-Klassen sind logisch, intuitiv, sauber, keine Makros, VC++-IDE kann deshalb locker durchnavigieren und Intellisence anbieten. Super C++-Design!
wie weiter oben schon jemand gesagt hat, baut FOX sein ganzes Messaging-System auf Macros auf... Sehr toll, das kann sogar wxWidgets
Man kann auf der fox-tookit Seite einen Calculator der mit der Lib statisch verlinkt ist downloaden: 512kb! Denke aber mal, das nur verlinkt wird, was benötigt wird.
mit Strip und upx bring ich sogar eine wxWidgets Anwendung auf 512 kb
Ich will dich jetzt nicht schlecht machen, aber IMO machst du ziemlich unqualifizierte Aussagen
-
sarfuan schrieb:
Artchi schrieb:
Wer Kohle hat, greift zu Qt, welches ich auch schon ausprobiert habe und einfach zu benutzen ist.
Anmerkung hierzu:
http://www.trolltech.com/newsroom/announcements/00000192.html?cid=20
Das Thema haben wir hier schon mal durch gekaut: Nur wer einen GNU-Compiler benutzt, wird auch in den Geschmack der GPL kommen. Weiterhin will nicht jeder seine Software OpenSource machen, was bei vielen anderen kostenlosen GUI-Toolkits auch möglich ist. Für viele Windowsler (wie mich) ist die GPL uninteressant. Ob ClosedSource evil ist oder nicht, möchte ich aber nicht diskutieren.
-
Blue-Tiger schrieb:
Die "offizielle" Distribution ist AFAIK die auf http://www.pcpm.ucl.ac.be/~gustin/win32_ports/
Hab ich dann auch irgendwann entdeckt und mußte wie gesagt feststellen, das in der devel-Installation (devel steht doch für Developer? Falls nicht, bitte aufklären) keine *.h und keine *.lib drin sind.
Blue-Tiger schrieb:
Wird seit Ewigkeiten in der Rund um die Programmierung-FAQ zur GUI-Programmierung erwaehnt
OK, ich schau da ehrlich nicht rein, weil ich hier auch nie Fragen stelle bzw. keine Fragen habe.
Blue-Tiger schrieb:
<Ironie>
Sag bloss, die mitgelieferten Beispiele funktionieren
</Ironie>Ich will ja nichts sagen (auch wenn du es belustigend findest) aber ich hab schon so manche Libs mit Beispielen runter geladen, wo einfach Fehler drin waren. Außerdem war das "Funktionieren" darauf bezogen, das ich einfach nur das FOX-Archiv ausgepackt und die Projektmappe in VC++ geöffnet habe. Ohne erstmal groß mit make, bjam oder was weiß ich zu hantieren oder an den Compiler-Settings zu machen. Wie oft haben hier schon Leute verzweifelt versucht Boost zu erstellen? Es ging mir nur um die wenigen und vorallem idiotensicheren Arbeitsschritte.
Blue-Tiger schrieb:
wie weiter oben schon jemand gesagt hat, baut FOX sein ganzes Messaging-System auf Macros auf... Sehr toll, das kann sogar wxWidgets
Ich habe wie gesagt erst gestern abend FOX ausprobiert. Und ich habe im Messaging-System keine Makros gefunden. Falls du die enums meinst: das ist ja wohl das normalste der Welt in C++! enums sind keine Makros, sondern ein Sprachmerkmal von C++. Aber ich werde mich die nächsten Tage in FOX einarbeiten, um genaueres sagen zu können. Habe ja nur meine ersten Eindrücke geschildert.
Blue-Tiger schrieb:
Ich will dich jetzt nicht schlecht machen, aber IMO machst du ziemlich unqualifizierte Aussagen
No Comment! Da steh ich drüber. :p
-
Artchi schrieb:
cd9000 schrieb:
Wo ist dieser Hinweis?
Ich habe gtkmm noch nicht wirklich benutzt, aber die Beispiele lassen sich mit Visual C++ 7.1 einwandfrei kompilieren und ausführen (gtkmm-2.6.1).Auf http://www.pcpm.ucl.ac.be/~gustin/win32_ports/gtkmm.html bei Important Warning.
Oh, von der Seite hab ichs gar nicht runtergeladen.
Tritt wohl eher selten auf und die Schuld liegt nicht bei gtkmm.Hmm... ist aber schon ziemlich ärgerlich, wenn ein gtkmm-Programm bei bestimmten Konstrukten einfach abstürzt. Dass es nicht an gtkmm liegt, zeigt aber der kleine Beispielcode von Bugzilla.
edit: Die gtkmm-FAQ sagt dazu auch etwas (4.13). Das Problem tritt dann auf, wenn man von einer gtkmm-Klasse ableitet und bestimmte Basisklassenkonstruktoren aufruft. Der FAQ zu Folge lässt sich das Problem relativ gut umgehen, indem man andere Konstruktoren aufruft.
-
Artchi schrieb:
Das Thema haben wir hier schon mal durch gekaut:
Haben "wir"? Wo?
Nur wer einen GNU-Compiler benutzt, wird auch in den Geschmack der GPL kommen.
Wo ist der Zusammenhang zwischen GPL und "nur GNU-Compiler"?
Für viele Windowsler (wie mich) ist die GPL uninteressant.
Wo ist der Zusammenhang zwischen Betriebssystem und "GPL uninteressant"?
-
VCF nicht vergessen
Hab zwar noch nicht mit gearbeitet, aber immerhin sagen sie auch, dass dass sie ein sauberes c++GUI-Framework haben wollen
<Ironie>
Sag bloss, die mitgelieferten Beispiele funktionieren
</Ironie>Da kann ich Artchi nur recht geben. Dass Beispiel-Projekte etc. immer auf Anhieb compilieren und laufen, kann man nun wirklich nicht sagen.
Hätte aber auch mal nen anderen Compiler als VC++ ausprobieren können. In der Windows-Welt wird der meistens am besten gepflegt.
-
sarfuan schrieb:
Artchi schrieb:
Das Thema haben wir hier schon mal durch gekaut:
Haben "wir"? Wo?
Kann ich leider nicht mehr finden. Hab nur einen Qt-Beitrag aus diesem Jahr per Suchfunktion gefunden. Bin mir aber sicher, das mal die Trolltech-Ankündigung auch hier gepostet und entsprechend behandelt wurde.
sarfuan schrieb:
Nur wer einen GNU-Compiler benutzt, wird auch in den Geschmack der GPL kommen.
Wo ist der Zusammenhang zwischen GPL und "nur GNU-Compiler"?
Für Trolltech scheint es diesen Zusammenhang zu geben, werden wohl die Mentalitätsgründe sein:
Commercial compiler support - the tools shipped with the GPL version support the popular GNU CC compiler. The C++ compilers from Microsoft, Intel and Borland are not supported by the tools in the GPL version.
Quelle: http://www.trolltech.com/developer/faqs/duallicense.html?cid=20#q18
sarfuan schrieb:
Für viele Windowsler (wie mich) ist die GPL uninteressant.
Wo ist der Zusammenhang zwischen Betriebssystem und "GPL uninteressant"?
Siehe zweite Antwort.
Bin der Meinung, das GPL-Liebhaber eher zu Linux wechseln. Ich hab ja nicht geschrieben alle Windowsler, sondern viele. Viele werden sicherlich kostenlose Software benutzen oder entwickeln wollen. Aber OpenSource ist trotzdem nicht jeder Manns Geschmack. Und unter Linux werden denke ich einfach mal mehr Leute eher auf OpenSource schwören. Und das scheint ja auch Trolltech mit zumachen, in dem sie erst jetzt Windows einbeziehen, aber blos nicht den evil VC++ u.a. ClosedSource Compilern.
Jedenfalls legen sie VC++-Usern offiziell Steine in den Weg. Ob man es über Trick17 trotzdem hinbekommt, ist ja was anderes.
Ist ja auch egal...
-
So, habe mich an das FOX-Tutorial rangemacht. Es werden tatsächlich Makros eingesetzt, die ich gegenüber anderen makroverseuchten GUIs ala wxWidgets ehrlich nicht sichten konnte. Im Prinzip benutzt FOX irgendwie eine merkwürdige Kombination. Enums und Objekte werden für Messages und Events hin und her geschickt, was ich für i.O. halte. Auf der anderen Seite wird für widerkehrende Aufgaben Makros benutzt:
The macro FXDECLARE(ScribbleWindow) declares a number of member functions which every object derived from FXObject should have; we've used a macro as it is always the same, and more convenient to program this way.
Werde mal in dem Tutorial weiter machen und schauen was noch so passiert. Trotzdem denke ich momentan noch das FOX-Toolkit gegenüber anderen GUI-Libs runder ist. Runter laden und loslegen!
Die Makros hätte man sich sicherlich ersparen können... sehr wünschenswert!!!
Aber wie mein Topic-Titel (leider) irgendwie voraus gesehen hat: es ist anscheinend wirklich eine endlose Geschichte?!
-
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
-
namespace schrieb:
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
Trifft aber auf alle mir bekannten GUI-Libs zu.
-
VCF pack alles in den Namensraum VCF. Auch sonst finde ich es recht sauber und Makros scheinen auch eher die Ausnahme zu sein. Das einzige was mich dran stört ist das es noch in der Entwicklung ist und ausser VC eignetlich noch nichts so wirklich einbahnfrei läuft. Hat aber Potenzial.
-
Walli schrieb:
namespace schrieb:
Von namespaces hat das Fox-Toolkit wohl auch noch nix gehört...
Trifft aber auf alle mir bekannten GUI-Libs zu.
gtkmm verwendet jedenfalls namespace anstelle Prefixes.
-
FOX benutzt auch einen Namespace genannt FX. Das Prefix FX ist trotzdem vor jedem Klassennamen.
-
schrecklich