IT-Lexikon › Programmierung › XmDrawingArea

XmDrawingArea

Programmierung Svenska → Aktualisiert: 2026-10-10

Motifs leeres Widget: eine Fläche ohne eigenes Aussehen, die nur meldet, wann sie neu gezeichnet werden muss, ihre Größe geändert oder angeklickt wurde, und das ganze Zeichnen dem Programm überlässt.

Motif lieferte Knöpfe, Listen und Textfelder mit fertigem Aussehen, aber keine Möglichkeit, einen Plot, eine Karte oder ein eigenes Diagramm darzustellen. XmDrawingArea ist die Antwort: ein Manager-Widget, das selbst nichts zeichnet und stattdessen drei Callbacks anbietet. XmNexposeCallback feuert, wenn der X-Server ein Expose-Ereignis schickt, XmNresizeCallback bei Größenänderung und XmNinputCallback bei Tastendrücken und Mausknöpfen. Im Callback holt das Programm mit XtWindow das Fenster des Widgets, erzeugt einen Grafikkontext und zeichnet mit Xlib genau wie ein Programm ohne Toolkit. Da es zugleich ein Manager ist, nimmt es Kinder an beliebigen Koordinaten auf, was es zum Nächsten machte, was Motif an einer Leinwand mit Knöpfen darauf hatte.

Die Fallen sind klassisches X. Ein in mehreren Rechtecken freigelegtes Fenster erzeugt mehrere Expose-Ereignisse, sodass ein vollständiges Neuzeichnen bei jedem Aufruf bedeutet, mehrfach umsonst zu zeichnen, und der Resize-Callback kann eintreffen, bevor das Fenster abgebildet ist und es noch nichts gibt, worauf man zeichnen könnte. SGIs GLwMDrawingArea war dasselbe Widget mit einem OpenGL-Kontext dahinter, und so bekam das meiste Unix-CAD der 1990er seine 3D-Ansicht in ein Motif-Fenster.

← Zurück zum Lexikon