Das Rahmenprogramm

In den folgenden Kapiteln soll der programmtechnische Umgang mit der grafischen Oberfläche beschrieben werden. Bevor die Fülle von Material den bislang hoffnungsfrohen Leser erschlägt, sei hier ein Wort der Aufmunterung gestattet. Tatsächlich kommen auf den Einsteiger eine Vielzahl von Funktionen, Parametern und Konstanten zu. Der Aufwand, ein solches Programm zu schreiben, ist höher als unter einer normalen Umgebung. Es ist aber Unfug, das berühmte ``Hello World''-Programm
[1] in seiner Textversion mit der Realisierung unter einer grafischen Oberfläche zu vergleichen. Selbst bei so einem kleinen Programm muß schließlich die grafische Oberfläche initialisiert werden. Dieses fällt bei einem großen Programm längst nicht so sehr ins Gewicht. Im allgemeinen wird man diese Teile beim nächsten Programm einfach mit Hilfe des Editors kopieren.

Ferner liefert die grafische Oberfläche bei der Programmierung von Ein- und Ausgabe sehr viel leistungsfähigere Elemente als eine einfache spracheigene Funktion. Gerade bei kommerziellen Programmen ist der Aufwand für Ein- und Ausgabe in herkömmlichen Systemen im allgemeinen höher als bei der Verwendung der grafischen Oberflächen, da man nicht mehr jedes Detail selbst schreiben muß. Das Problem liegt darin, daß dieser Aufwand bei grafischen Oberflächen in die Anfangsphase eines Projektes fällt. Wenn man sich gerade wieder einmal darüber ärgert, welchen Aufwand man treiben muß, hilft es oft, sich darüber Gedanken zu machen, welcher Aufwand notwendig wäre, wenn man die Ein- und Ausgabemechanismen selbst entwickeln müßte.

Der grobe Ablauf von Applikationen unter grafischen Oberflächen ist immer gleich. In einer Initialisierungsphase aquirieren sie die benötigten Ressourcen und stellen ihre Elemente dar. Anschließend empfangen sie die Ereignisse, die ihnen von der grafischen Oberfläche zugesandt werden und rufen je nach Ereignis Unterprogramme auf, die die eigentliche Arbeit des Programms vollziehen, bis sie ein Ereignis empfangen, das den Ablauf beendet. Daraufhin geben sie ihre Ressourcen wieder frei und melden sich ab. Lediglich X-Programme schließen mit einem einfachen \verb|exit| und überlassen es dem System, die zugehörigen Ressourcen wieder freizugeben.

Das Aquirieren der Ressourcen beginnt mit der Ermittlung des Applikationshandle. Unter PM wird noch eine Nachrichtenschlange zum Empfang der Ereignisse eröffnet. Im Normalfall wird dann der Ausgabebereich der Applikation eröffnet. Dies ist unter GEM und Macintosh der Zugriff auf den Bildschirm. Bei den anderen Systemen wird ein Applikationsfenster auf dem Desktop angelegt. Die zu Anfang des Programmes sichtbaren Elemente werden erzeugt und dargestellt.

Nun werden die Ereignisse des Systems empfangen. Der Empfang der Nachrichten wird nach zwei Verfahren realisiert. Ein Programm für GEM oder Macintosh ruft eine Funktion zum Empfang der Nachrichten auf und startet anschließend programmeigene Funktionen.

Die anderen Systeme laufen in eine Endlosschleife, in der die Nachrichten direkt weitergereicht werden. Bei MS-Windows und PM wird an dieser Stelle normalerweise lediglich die Nachricht zum Beenden des Programms abgefangen, die dann zum Ende des Programmes führt. Ein X-Programm verharrt dagegen in der Endlosschleife, bis das Programm an irgendeiner Stelle mit exit beendet wird.

Der eigentliche Empfänger der Nachrichten sind in diesen Systemen die Fenster bzw. Widgets. Für jedes nachrichtenempfangende Element schreibt der Programmierer eine Funktion, die bei Eintreffen eines Ereignisses vom System aufgerufen wird. Damit das System weiß, welche Funktion aufzurufen ist, wird (meist in der Initialisierungsphase) die Adresse dieser Funktion dem System mitgeteilt. Innerhalb dieser Funktion werden die Nachrichten analysiert und die bearbeitenden Funktionen aufgerufen.

Außer bei X-Programmen wird zum Schluß eine Abmeldephase durchlaufen, in der die Programme alle Ressourcen in umgekehrter Reihenfolge wieder freigeben, in der sie sie aquiriert haben.


[1] Kernighan und Ritchie stellen als erstes einfaches Programm in ihrem Buch "Programmieren in C" ein Programm vor, das die Zeile "Hello world" auf dem Bildschirm ausgibt.
Homepage (C) Copyright 1993-1999 Arnold Willemer