Im Wesentlichen macht das Fenstersystem eines Betriebssystems einige API-Aufrufe verfügbar, die Sie ausführen können, um Aufgaben wie das Erstellen eines Fensters oder das Einfügen einer Schaltfläche in das Fenster auszuführen. Grundsätzlich erhalten Sie eine Reihe von Header-Dateien und können Funktionen in diesen importierten Bibliotheken aufrufen, genau wie Sie es mit stdlib und tun würden printf
.
Jedes Betriebssystem verfügt über ein eigenes GUI-Toolkit, eine Reihe von Header-Dateien und API-Aufrufen sowie eine eigene Vorgehensweise. Es gibt auch plattformübergreifende Toolkits wie GTK , Qt und wxWidgets , mit denen Sie Programme erstellen können, die überall funktionieren. Sie erreichen dies, indem sie auf jeder Plattform dieselben API-Aufrufe haben, jedoch eine andere Implementierung für die API-Funktionen, die die nativen API-Aufrufe des Betriebssystems aufrufen.
Eine Sache, die sie alle gemeinsam haben und die sich von einem CLI-Programm unterscheidet, ist eine sogenannte Ereignisschleife. Die Grundidee dort ist etwas kompliziert und schwer zu komprimieren, aber im Wesentlichen bedeutet dies, dass in Ihrer Hauptklasse / Hauptfunktion nicht viel los ist, außer:
- Überprüfen Sie die Ereigniswarteschlange, wenn neue Ereignisse vorhanden sind
- Wenn dies der Fall ist, senden Sie diese Ereignisse an die entsprechenden Handler
- Wenn Sie fertig sind, geben Sie die Ertragskontrolle an das Betriebssystem zurück (normalerweise mit einem speziellen Funktionsaufruf "Schlaf" oder "Auswählen" oder "Ertrag").
- Dann kehrt die Yield-Funktion zurück, wenn das Betriebssystem fertig ist, und Sie müssen die Schleife erneut durchlaufen.
Es gibt viele Ressourcen zur ereignisbasierten Programmierung. Wenn Sie Erfahrung mit JavaScript haben, ist dies dieselbe Grundidee, außer dass Sie als Scripter keinen Zugriff oder keine Kontrolle über die Ereignisschleife selbst haben oder welche Ereignisse vorhanden sind. Ihre einzige Aufgabe besteht darin, Handler zu schreiben und zu registrieren.
Sie sollten bedenken, dass die GUI-Programmierung im Allgemeinen unglaublich kompliziert und schwierig ist. Wenn Sie die Option haben, ist es tatsächlich viel einfacher, einfach einen eingebetteten Webserver in Ihr Programm zu integrieren und über eine HTML / webbasierte Oberfläche zu verfügen. Die einzige Ausnahme, auf die ich gestoßen bin, sind Apples Cocoa + Xcode + Interface Builder + Tutorials, die es für Benutzer, die noch keine Erfahrung mit GUI-Programmierung haben, leicht zugänglich machen.