3.9 Strukturen für Canvas-Funktionen
Die in den nachfolgenden Kapiteln vorgestellte Struktur dient als Parameter für alle Canvas-Funktionen. Diese Struktur sowie die dazu gehörende Funktion sind Fenstersystem abhängig.
3.9.1 Struktur DM_CanvasUserArgs für Microsoft Windows
Für das Fenstersystem Microsoft Windows sieht die Definition der Canvas-Struktur wie folgt aus:
typedef struct {
DM_ID object;
int reason;
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
LRESULT mresult;
int x;
int y;
int width;
int height;
HANDLE hdc;
DM_Pointer userdata;
} DM_CanvasUserArgs;
Bedeutung der Elemente
DM_ID object
In diesem Element wird die DM-ID des Canvas-Objektes übergeben.
int reason
In diesem Element wird der Grund für den Aufruf der Canvas-Funktion übergeben. Dabei gibt es zur Zeit folgende Möglichkeiten:
Reason |
Bedeutung |
---|---|
Es liegt ein Redraw-Ereignis für die Canvas vor. |
|
Der Benutzer hat eine Eingabe mit der Maus oder der Tastatur vorgenommen. |
|
Eine Canvas-Ressource wurde verändert. |
|
Die Canvas wurde in ihrer Größe verändert. |
|
Die Canvas ist auf dem Bildschirm sichtbar gemacht worden. |
|
Die Canvas ist nicht mehr auf dem Bildschirm sichtbar. |
|
Eine Microsoft Windows-Nachricht ist eingetroffen. Bei dieser Task ist der Rückgabewert der Canvas-Funktion von entscheidender Bedeutung. Ein TRUE heißt, dass die Message verarbeitet wurde; "mresult" wird an Microsoft Windows zurückgegeben. Ein FALSE heißt, dass die Message nicht verarbeitet wurde, der Dialog Manager führt die Default-Aktion aus. |
HWND hwnd
HandleID des Microsoft Windows Fensters.
UINT message
WPARAM wParam
LPARAM lParam
LRESULT mresult
Dies sind die originalen Message-Parameter von Microsoft Windows. Wenn keine Message vorhanden ist, hat das Element "message" den Wert 0. Die Elemente wParam, lParam und mresult sind nur gültig, wenn das Element "message" ungleich 0 ist.
int x
In diesem Element wird die X-Koordinate der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
int y
In diesem Element wird die Y-Koordinate der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
int width
In diesem Element wird die Breite der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
int height
In diesem Element wird die Höhe der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
HANDLE hdc
Dieses Element ist der device-context-handle, der zum Zeichnen in die Canvas benötigt wird.
DM_Pointer userdata
In diesem Element kann die Callback-Funktion beliebige anwendungsbezogene Daten speichern. Die gespeicherten Werte werden bei jedem Aufruf an die Canvas-Funktion mit übergeben. Für weitere Erläuterungen kann das Manual "Objekte, Attribute und Methoden" für das Attribut "AT_CanvasData" herangezogen werden.
Anmerkung
Die Belegung dieser Struktur ist immer abhängig von der aktuellen Task. Die Elemente object, reason und hwnd sind immer belegt, die Belegung der anderen Strukturelemente kann der nachfolgenden Tabelle entnommen werden:
Task |
Belegtes Element |
Bedeutung |
---|---|---|
CCR_expose |
x, y, width, height |
Dimension des Update-Rechtecks |
|
hdc |
Device-Context-Handle zum Zeichnen in die Canvas. |
CCR_input |
x, y |
Diese Felder sind belegt, falls das ursprüngliche Ereignis ein "ButtonPress"-Ereignis gewesen ist. |
CCR_reschange |
x, y |
Koordinate der linken oberen Ecke der Nutzfläche der Canvas bezüglich des eigentlichen Canvas-Fensters. |
|
width, height |
Dimension der Canvas-Nutzfläche. |
CCR_resize |
x, y |
Koordinate der linken oberen Ecke der Nutzfläche bezüglich des Canvas-Fensters. |
|
width, height |
Dimension der Canvas-Nutzfläche. |
CCR_start |
x, y |
Koordinate der linken oberen Ecke der Nutzfläche der Canvas bezüglich des eigentlichen Canvas-Fensters. |
|
width, height |
Dimension der Canvas-Nutzfläche. |
CCR_winmsg |
message, wParam, lParam, mresult |
In diesen Elementen werden die original Windows Messages weitergereicht. Die möglichen Werte und Bedeutung dieser Elemente können dem Microsoft Windows Manual entnommen werden. |
3.9.2 Struktur DM_CanvasUserArgs für Motif
Für das Fenstersystem Motif sieht die Definition der Canvas-Struktur wie folgt aus:
typedef struct {
DM_ID object;
int reason;
#ifdef _XLIB_H_
Xevent *xevent;
Window window;
#else
DM_Pointer xevent;
long window;
#endif
#ifdef _XtIntrinsic_h
Widget widget;
#else
DM_Pointer widget;
#endif
DM_Int2 x;
DM_Int2 y;
DM_UInt2 width;
DM_UInt2 height;
DM_Pointer userdata;
} DM_CanvasUserArgs;
Bedeutung der Elemente
DM_ID object
In diesem Element wird die DM-ID des Objekts übergeben, das diesen Funktionsablauf ausgelöst hat, also die Canvas, zu der die aufgerufene Funktion gehört.
int reason
In diesem Element teilt der DM der Anwendung mit, warum die Canvas-Funktion aufgerufen wurde.
Dabei gibt es folgende als Konstanten definierte Möglichkeiten:
Reason |
Bedeutung |
---|---|
Es liegt ein Redraw-Ereignis für die Canvas vor. |
|
Die Canvas hat den Eingabefokus bekommen. |
|
Die Canvas hat den Fokus verloren. |
|
Der Benutzer hat eine Eingabe mit der Maus oder der Tastatur vorgenommen. |
|
Eine Canvas-Ressource wurde verändert. |
|
Die Canvas wurde in ihrer Größe verändert. |
|
Die Canvas ist auf dem Bildschirm sichtbar gemacht worden. |
|
Die Canvas ist nicht mehr auf dem Bildschirm sichtbar. |
|
Es liegt ein beliebiges anderes X-Event für die Canvas vor. |
Xevent *xevent
In diesem Parameter wird das Orginal-X-Event an die Anwendung übergeben. Falls kein X-Event vorhanden ist, ist dieser Parameter ein NULL-Pointer. Diese Ereignisse werden in den entsprechenden X-Manuals erklärt.
Window window
In diesem Element wird das zugehörige X-Windows-Fenster an die Anwendung übergeben. Für eine Erklärung sei hier auf die entsprechenden X-Windows-Manuals hingewiesen.
Widget widget
In diesem Element wird die Xt-Widget Information dem Objekt übergeben.
DM_Int2 x
In diesem Element wird die X-Koordinate der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
DM_Int2 y
In diesem Element wird die Y-Koordinate der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
DM_UInt2 width
In diesem Element wird die Breite der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
DM_UInt2 height
In diesem Element wird die Höhe der Nutzfläche der Canvas bzgl. des Canvas-Fensters übergeben.
DM_Pointer userdata
In diesem Element kann die Callback-Funktion beliebige anwendungsbezogene Daten speichern. Die gespeicherten Werte werden bei jedem Aufruf an die CanvasFunktion mit übergeben. Für weitere Erläuterungen kann das Manual "Objekte, Attribute und Methoden" für das Attribut "AT_CanvasData" herangezogen werden.
Anmerkung
Die Belegung dieser Struktur ist immer abhängig von der aktuellen Task. Die Elemente "object" und "reason" sind immer belegt, die Elemente "window", "widget" und "xevent" sind soweit verfügbar immer belegt, die Belegung der anderen Strukturelemente kann der nachfolgenden Tabelle entnommen werden:
Task |
Belegtes Element |
Bedeutung |
---|---|---|
CCR_expose |
x, y, width, height |
Dimension des Update-Rechtecks |
CCR_input |
x, y |
Diese Felder sind belegt, falls das ursprüngliche Ereignis ein "ButtonPress"-Ereignis gewesen ist. |
CCR_reschange |
x, y |
Koordinate der linken oberen Ecke der Nutzfläche der Canvas bezüglich des eigentlichen Canvas-Fensters. |
|
width, height |
Dimension der Canvas-Nutzfläche. |
CCR_resize |
x, y |
Koordinate der linken oberen Ecke der Nutzfläche bezüglich des Canvas-Fensters, falls die Werte schon verfügbar sind, sonst 0. |
|
width, height |
Dimension der Canvas-Nutzfläche, falls die Werte schon verfügbar sind sonst 0. |
CCR_start |
x, y |
Koordinate der linken oberen Ecke der Nutzfläche der Canvas bezüglich des eigentlichen Canvas-Fensters. |
|
width, height |
Dimension der Canvas-Nutzfläche. |