Eine grafische Benutzeroberfläche muß in der Lage sein, auf zahlreiche verschiedene Ereignisse zu reagieren. Typische Events sind ein Mausklick, die Bewegung der Maus oder ein Tastendruck. Die Ereignisse betreffen aber nicht nur die Benutzereingaben, sondern auch die Interaktion zwischen Applikationen.
Z.B. ein Expose-Event wird beim Start einer neuen Applikation ausgelöst. Wird die Maus in ein Fenster gefahren, gibt es einen Enter-Event.
Die Zahl verschiedener Events wird durch Kombinationen multipliziert. Applikationen sollen häufig auf einen Doppelklick reagieren oder erst auf das Loslassen der Maustaste; die Bewegung der Maus bei gedrückter Taste wird oft zur Auswahl in Menüs verwendet.
Die unterschiedlichsten Ereignisse können zu beliebiger Zeit in beliebiger Reihenfolge auftreten. Ein gutes Anwendungsprogramm ist so geschrieben, daß es vom Benutzer gesteuert wird und nicht umgekehrt.
Das typische Schema für die Verarbeitung von Interaktionen in einem Anwendungsprogramm ist die Event-Loop. Nach dem Schema eines endlichen Automaten, der einen zentralen Wartezustand kennt, werden die Übergänge zu anderen Zuständen durch Benutzereingaben ausgelöst.
Darstellung des Ausgangsbilds
do {
Auswahl von Befehlen oder Objekten ermöglichen
/* Das Programm wartet unbestimmte Zeit, bis Benutzer etwas eingibt */
warte auf Benutzereingabe
switch (Eingabe) {
bearbeite Eingabe und führe ggf. Kommando aus
bei Bedarf Bildschirm aktualisieren
}
}
while(!Ende) /* Benutzer hat nicht ``Ende'' gewählt */