Also, ich wurde beauftragt, einen Programmierkurs zu unterrichten, der einiges über die GUI-Programmierung in C ++ enthält. Ich fragte mich, was wäre das beste Setup dafür? Linux und GCC sind meine Werkzeuge der Wahl.
Ich habe noch nie einen solchen Kurs gemacht, ich bin ein guter C-Programmierer, aber kein C ++ - Programmierer. Ich brauche C ++, weil der gleiche Kurs OOP abdecken muss, und wie schwer kann C ++ sein? :)
FWITW, Bjarne Stropstrups verwendet FLTK für den gleichen Zweck: Ссылка
Wenn das Betriebssystem und das GUI-Toolkit Ihre Wahl sind und es C ++ sein muss und Sie Linux bevorzugen, dann denken Sie über Nokia Qt API.
Es ist kostenlos, quelloffen, plattformübergreifend und von hoher Qualität.
stöhnt innerlich :) C ++ ist völlig anders als C und nicht nur über OOP ...
Vielleicht möchten Sie ihnen ein plattformübergreifendes GUI-Framework wie wxWidgets oder Qt beibringen. Aber das erfordert, dass Sie zuerst ernsthaft über sie lernen. Es gibt ein gutes Buch über wxWidgets, das als kostenloses PDF verfügbar ist (Cross-Platform GUI Programming mit wxWidgets) - siehe Ссылка .
Der Vorteil des plattformübergreifenden Aspekts ist, dass Sie Linux und GCC ganz nach Belieben verwenden können und ihre Fähigkeiten bei Bedarf auf andere Plattformen übertragen werden.
(Vielleicht möchten Sie ihnen auch CMake beibringen, wenn Sie die gesamte Tragbarkeitslinie im Großen und Ganzen durchgehen wollen ...)
Sie können OOP und GUI in C ausführen. Schauen Sie sich GTK + an.
Ich bin ein Fan von gtkmm und Lichtung . Die GUI ist nicht besonders schön, aber es ist die beste GUI-Bibliothek aus der Sicht des C ++ - Programmierers. Es ist sehr einfach zu verwenden und es macht einfach Sinn. In der Tat können Sie eine nette GUI von Grund auf mit nichts als einem Texteditor und Kodierung erstellen. Auf der anderen Seite gibt es auch die Lichtdesigner, GUI mit einer GUI-Anwendung zu erstellen. gtkmm lässt sich problemlos mit der Standard-C ++ - Bibliothek verbinden, bietet aber auch die ustring
-Klasse, eine std::string
-kompatible Unicode-unterstützende String-Klasse. Es kommt auch mit libsigc ++ für die Ereignisverarbeitung Mechanismus. libsigc ++ ähnelt Boost.Signals im Design. Die klare Trennung der Anliegen in der Bibliothek - der Rahmen, die GUI und die Signale - machen auch pädagogisch gute Dienste.
Für die "einige Sachen" über die GUI, die Sie als "Zeichnen, Aktualisieren, ereignisbasiertes ...", d. h. grundlegende Konzepte, beschreiben, sollten Sie die Windows-API in Betracht ziehen.
Es ist einfach, es ist konkret , und es ermöglicht Ihren Schülern, alles auf eine OO-Art zu verpacken, was sehr lehrreich ist.
Beispiel für "Zeichnen, Auffrischen, ereignisbasiert", Zeichnen einer Ellipse mit dynamischer Größe (Sie müssen die drei Header definieren, die am Anfang enthalten sind):
%Vor%BEARBEITEN : OK, vielleicht sollte ich diese drei Header am besten posten. Es ist keine gute (vollständige) Antwort ohne sie. Also.
[winapi / wrapper / windows_h.h] :
%Vor%[cppsupport / error_handling.h] :
%Vor%[cppsupport / anti_warnings.h] :
%Vor%Prost & amp; hth.
Wenn Sie C ++ und Linux verwenden, betrachten Sie gtkmm. Die GNOME-Desktopumgebung basiert auf GTK + und gtkmm ist der offizielle C ++ - Wrapper für die GTK + -Bibliothek. Es enthält eine nette Dokumentation und, was für den Unterricht wichtig sein könnte, versucht die C ++ - Standardbibliothek so gut wie möglich zu verwenden.
Die andere beliebte Wahl Qt (die auch ein sehr gutes Toolkit ist, besonders wenn Sie plattformübergreifende Kompatibilität benötigen) hat einen großen Teil der Standardbibliothek neu implementiert, was es wahrscheinlich zu einer nicht so guten Wahl macht, wenn Sie Standard unterrichten C ++.
Für Linux kann ich ultimate ++ und qt . Ich persönlich benutze QT, und finde es ziemlich gut, bis auf einige echte WTF Dinge.
Was c ++ betrifft, würde ich das nicht so einfach beurteilen. c und c ++ sind ziemlich verschieden.
Tags und Links c++ user-interface