Home AESAES EreignisverwaltungEreignisverwaltung FensterverwaltungFensterverwaltung

8.8 Fensterdialoge

Die folgenden Funktionen wurden mit MagiC 4 eingeführt und erlauben die einfache Konstruktion von Dialogboxen in Fenstern:

wdlg_close Fensterdialog schließen.
wdlg_create Fensterdialog erstellen.
wdlg_delete Fensterdialog schließen.
wdlg_evnt Auswerten der Dialog-Events.
wdlg_get_edit Aktuelles Edit-Feld ermitteln.
wdlg_get_handle Fenster-Kennung eines Dialogs ermitteln.
wdlg_get_tree Objektbaum des Fensters ermitteln.
wdlg_get_udata Userdaten ermitteln.
wdlg_open Fensterdialog öffnen.
wdlg_redraw Zeichnet ein Objekt in einem Fensterdialog.
wdlg_set_edit Edit-Feld im Dialog aktivieren.
wdlg_set_iconify Fensterdialog ikonifizieren.
wdlg_set_size Größe eines Dialogs verändern.
wdlg_set_tree Neuen Objektbaum im Dialog verankern.
wdlg_set_uniconify Fensterdialog unikonifizieren.

Hinweis: Die Existenz dieser Funktionen kann per appl_getinfo (Opcode 7) festgestellt werden.

Querverweis: Fensterverwaltung   Style-Guidelines   WDIALOG

8.8.1 wdlg_close

Name: »WindowDialog Close« - Fensterdialog schließen.
 
AES-Nummer: 162
 
Deklaration: int16_t wdlg_close ( DIALOG *dialog, int16_t *x, int16_t *y );
 
Beschreibung: Die Funktion schließt den Fensterdialog dialog.
 
Parameter Bedeutung
   
dialog Zeiger auf Verwaltungsstruktur
x Zeiger auf eine Variable in der die letzte x-Koordinate des Dialogs zurückgeliefert wird.
y Zeiger auf eine Variable in der die letzte y-Koordinate des Dialogs zurückgeliefert wird.

Hinweis: Alte WDIALOG-Versionen liefern nicht die Fensterkoordinaten zurück. In diesem Fall trägt das Binding -1 ein, so daß der Dialog beim nächsten Aufruf automatisch zentriert wird.
 
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open
 

8.8.1.1 Bindings für wdlg_close

C: int16_t wdlg_close ( DIALOG *dialog, int16_t *x, int16_t *y );
 
Umsetzung:
 
int16_t wdlg_close ( DIALOG *dialog, int16_t *x, int16_t *y )
{
  int_out[1] = -1;
  int_out[2] = -1;

  addr_in[0] = dialog;
  crys_if (162);

  *x = int_out[1];
  *y = int_out[2];

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 162 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 3 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
int_out int_out[0] Return-Wert

8.8.2 wdlg_create

Name: »WindowDialog Create« - Fensterdialog erstellen.
 
AES-Nummer: 160
 
Deklaration: DIALOG *wdlg_create ( HNDL_OBJ handle_exit, OBJECT *tree, void *user_data, int16_t code, void *data, int16_t flags );
 
Beschreibung: Die Funktion fordert Speicherplatz für eine Dialogstruktur an, und initialisiert diese. Es gilt:
 
Parameter Bedeutung
   
handle_exit Zeiger auf eine Service-Funktion
tree Zeiger auf den Objektbaum
user_data Zeiger auf Benutzerinformationen
code wird in handle_exit über die Komponente clicks übergeben
data wird in handle_exit über die Komponente data übergeben
flags verschiedene Flags
1 = Hintergrundbedienung zulassen
Ergebnis: Die Funktion liefert einen Zeiger auf die erstellte Dialogstruktur zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open   wdlg_close
 

8.8.2.1 Bindings für wdlg_create

C: DIALOG *wdlg_create ( HNDL_OBJ handle_exit, OBJECT *tree, void *user_data, int16_t code, void *data, int16_t flags );
 
Umsetzung:
 
DIALOG *wdlg_create ( HNDL_OBJ handle_exit, OBJECT *tree,
                      void *user_data, int16_t code,
                      void *data, int16_t flags )
{
   addr_in[0] = handle_exit;
   addr_in[1] = tree;
   addr_in[2] = user_data;
   addr_in[3] = data;

   int_in[0] = code
   int_in[1] = flags;

   crys_if (160);

   return ( addr_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 160 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 4 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] handle_exit
addr_in+4 addr_in[1] tree
addr_in+8 addr_in[2] user_data
addr_in+12 addr_in[3] data
int_in int_in[0] code
int_in+2 int_in[1] flags
addr_out addr_out[0] Return-Wert

8.8.3 wdlg_delete

Name: »WindowDialog Delete« - Fensterdialog schließen.
 
AES-Nummer: 163
 
Deklaration: int16_t wdlg_delete ( DIALOG *dialog );
 
Beschreibung: Die Funktion gibt den Speicherplatz für einen Fensterdialog wieder frei. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_close
 

8.8.3.1 Bindings für wdlg_delete

C: int16_t wdlg_delete ( DIALOG *dialog );
 
Umsetzung:
 
int16_t wdlg_delete ( DIALOG *dialog )
{
   addr_in[0] = dialog;
   crys_if (163);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 163 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
int_out int_out[0] Return-Wert

8.8.4 wdlg_evnt

Name: »WindowDialog Event« - Dialogbearbeitung.
 
AES-Nummer: 166
 
Deklaration: int16_t wdlg_evnt ( DIALOG *dialog, EVNT *events );
 
Beschreibung: Die Funktion dient zur Auswertung bzw. Bearbeitung von Ereignissen eines Fensterdialogs. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
events Zeiger auf EVNT-Struktur

Hinweis: Diese Funktion muß im Event-Loop aufgerufen werden. Im Bitvektor mwhich der EVNT-Struktur werden die Ereignis-Bits gelöscht, die sich auf den Fensterdialog beziehen. Nach dem Aufruf dieser Funktion kann die EVNT-Struktur von der Applikation zur Auswertung der für sie bestimmten Events benutzt werden.
 
Falls die Funktion den Wert 0 zurückliefert, muß der Dialog (per wdlg_close geschlossen werden.
 
Achtung: Das Iconifying wird nicht von dieser Funktion unterstützt. Wird der Iconifier bei wdlg_open als Fensterelement angemeldet muß daher dieses Ereignis selbst ausgewertet und behandelt werden. Das gleiche gilt, wenn man den Sizer als Element anmeldet.
 
Ergebnis: Die Funktion liefert den Wert 1 zurück, wenn kein Fehler aufgetreten ist. Bei einem Rückgabewert von 0 muß der Dialog geschlossen werden.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open   wdlg_close
 

8.8.4.1 Bindings für wdlg_evnt

C: int16_t wdlg_evnt ( DIALOG *dialog, EVNT *events );
 
Umsetzung:
 
int16_t wdlg_evnt ( DIALOG *dialog, EVNT *events )
{
   addr_in[0] = dialog;
   addr_in[1] = events;

   crys_if (166);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 166 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] events
int_out int_out[0] Return-Wert

8.8.5 wdlg_get_edit

Name: »WindowDialog GetEdit« - aktuelles Editfeld ermitteln.
 
AES-Nummer: 164 (Unterfunktion 1)
 
Deklaration: int16_t wdlg_get_edit ( DIALOG *dialog, int16_t *cursor );
 
Beschreibung: Die Funktion ermittelt die Nummer des aktuellen Editobjektes. Es gilt:
 
Parameter Bedeutung
   
dialog Zeiger auf den Dialog
cursor Index des Zeichens

Achtung: In alten WDIALOG-Versionen wird der Parameter cursor nicht zurückgeliefert; das Binding in WDIAL_A.S (vgl. original MagiC Dokumentation) sorgt dafür, daß in diesem Fall der Wert -1 eingetragen wird.
 
Ergebnis: Die Funktion liefert die Nummer des aktuellen Editobjektes zurück. Ein Wert von 0 bedeutet, daß momentan kein Editobjekt aktiv ist.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open   wdlg_close
 

8.8.5.1 Bindings für wdlg_get_edit

C: int16_t wdlg_get_edit ( DIALOG *dialog, int16_t *cursor );
 
Umsetzung:
 
int16_t wdlg_get_edit ( DIALOG *dialog, int16_t *cursor )
{
   addr_in[0] = dialog;

   int_in[0] = 1;

   int_out[1] = -1;

   crys_if (164);

   *cursor = int_out[1];

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 164 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 2 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
int_in int_in[0] 1 # Unterfunktion
int_out int_out[0] Return-Wert
int_out+2 int_out[1] cursor

8.8.6 wdlg_get_handle

Name: »WindowDialog Get Window Handle« - Fensterkennung eines Dialogs ermitteln.
 
AES-Nummer: 164 (Unterfunktion 3)
 
Deklaration: int16_t wdlg_get_handle ( DIALOG *dialog );
 
Beschreibung: Die Funktion ermittelt die Fensterkennung (Window-Handle) eines Fensterdialogs. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
Ergebnis: Die Funktion liefert die AES-Fensterkennung des Dialogs zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wind_find
 

8.8.6.1 Bindings für wdlg_get_handle

C: int16_t wdlg_get_handle ( DIALOG *dialog );
 
Umsetzung:
 
int16_t wdlg_get_handle ( DIALOG *dialog )
{
   addr_in[0] = dialog;
   int_in[0] = 3;
   crys_if (164);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 164 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
int_in int_in[0] 3 # Unterfunktion
int_out int_out[0] Return-Wert

8.8.7 wdlg_get_tree

Name: »WindowDialog GetTree« - Objektbaum des Fensters ermitteln.
 
AES-Nummer: 164 (Unterfunktion 0)
 
Deklaration: int16_t wdlg_get_tree ( DIALOG *dialog, OBJECT **tree, GRECT *r );
 
Beschreibung: Die Funktion ermittelt die Adresse des im Fenster angezeigten Objektbaumes. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
tree Zeiger auf den Zeiger des Objektbaums
r Zeiger auf die Rechtecksbeschreibung

Hinweis: Darüber hinaus liefert die Funktion die Größe der Arbeitsfläche des Fensters zurück. Sofern die Dialoggröße nicht mit wdlg_set_size verändert wurde, entspricht die Arbeitsfläche des Fensters dem GRECT des Wurzelobjektes.
 
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_get_handle
 

8.8.7.1 Bindings für wdlg_get_tree

C: int16_t wdlg_get_tree ( DIALOG *dialog, OBJECT **tree, GRECT *r );
 
Umsetzung:
 
int16_t wdlg_get_tree ( DIALOG *dialog, OBJECT **tree,
                        GRECT *r )
{
   addr_in[0] = dialog;
   addr_in[1] = tree;
   addr_in[2] = r;

   int_in[0] = 0;
   crys_if (164);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 164 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 3 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] tree
addr_in+8 addr_in[2] r
int_in int_in[0] 0 # Unterfunktion
int_out int_out[0] Return-Wert

8.8.8 wdlg_get_udata

Name: »WindowDialog Get User Data« - ermittelt die Userdaten eines Fensterdialogs.
 
AES-Nummer: 164 (Unterfunktion 2)
 
Deklaration: void *wdlg_get_udata ( DIALOG *dialog );
 
Beschreibung: Die Funktion ermittelt die Userdaten eines Dialogs. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog

Hinweis: Die Funktion liefert die Variable user_data zurück, die beim Aufruf von wdlg_create übergeben worden ist.
 
Ergebnis: Die Funktion liefert einen Zeiger auf die Userdaten zurück, d.h. einen Zeiger auf die Variable user_data, die beim Aufruf von wdlg_create übergeben wurde.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_get_handle
 

8.8.8.1 Bindings für wdlg_get_udata

C: void *wdlg_get_udata ( DIALOG *dialog );
 
Umsetzung:
 
void *wdlg_get_udata ( DIALOG *dialog )
{
   addr_in[0] = dialog;
   int_in[0] = 2;
   crys_if (164);

   return ( addr_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 164 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] dialog
int_in int_in[0] 2 # Unterfunktion
addr_out addr_out[0] Return-Wert

8.8.9 wdlg_open

Name: »WindowDialog Open« - öffnet einen Fensterdialog.
 
AES-Nummer: 161
 
Deklaration: int16_t wdlg_open ( DIALOG *dialog, int8_t *title, int16_t kind, int16_t x, int16_t y, int16_t code, void *data );
 
Beschreibung: Die Funktion öffnet einen Fensterdialog auf dem Bildschirm. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
title Fenstername oder NULL
kind Komponenten des Fensters (NAME/MOVER/CLOSER)
x x-Koordinate
y y-Koordinate des Dialogs
code wird handle_exit in der Komponente clicks übergeben
data wird handle_exit in der Komponente data übergeben

Hinweis: Bevor die Funktion zum Aufrufer zurückkehrt, wird noch die Serviceroutine handle_exit mit der Funktionsnummer HNDL_OPEN aufgerufen. Bei Koordinaten von (-1,-1) wird der Dialog zentriert dargestellt.
 
Ergebnis: Die Funktion liefert die Fensterkennung des Dialogs zurück, bzw. im Fehlerfall den Wert 0.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_close   wdlg_delete
 

8.8.9.1 Bindings für wdlg_open

C: int16_t wdlg_open ( DIALOG *dialog, int8_t *title, int16_t kind, int16_t x, int16_t y, int16_t code, void *data );
 
Umsetzung:
 
int16_t wdlg_open ( DIALOG *dialog, int8_t *title,
                    int16_t kind, int16_t x,
                    int16_t y, int16_t code, void *data )
{
   addr_in[0] = dialog;
   addr_in[1] = title;
   addr_in[2] = data;

   int_in[0] = kind;
   int_in[1] = x;
   int_in[2] = y;
   int_in[3] = code;

   crys_if (161);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 161 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 3 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] title
addr_in+8 addr_in[2] data
int_in int_in[0] kind
int_in+2 int_in[1] x
int_in+4 int_in[2] y
int_in+6 int_in[3] code
int_out int_out[0] Return-Wert

8.8.10 wdlg_redraw

Name: »WindowDialog Redraw« - Objekt in einem Dialog zeichnen.
 
AES-Nummer: 167
 
Deklaration: void wdlg_redraw ( DIALOG *dialog, GRECT *rect, int16_t obj, int16_t depth );
 
Beschreibung: Die Funktion zeichnet ein Objekt in einem Dialog, unter Beachtung der Rechteckliste des Fensters. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
rect Zeiger auf das begrenzende Rechteck
obj Nummer des Startobjektes
depth Anzahl der zu zeichnenden Ebenen

Hinweis: Um ein Objekt innerhalb des Dialogs zu zeichnen, sollte immer diese Funktion und nicht objc_draw verwendet werden. Vor Anwendung der Funktion ist wie üblich ein Aufruf von wind_update nötig.
 
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   objc_draw   WM_REDRAW
 

8.8.10.1 Bindings für wdlg_redraw

C: void wdlg_redraw ( DIALOG *dialog, GRECT *rect, int16_t obj, int16_t depth );
 
Umsetzung:
 
void wdlg_redraw ( DIALOG *dialog, GRECT *rect, int16_t obj,
                   int16_t depth )
{
   addr_in[0] = dialog;
   addr_in[1] = rect;

   int_in[0] = obj;
   int_in[1] = depth;
   crys_if (167);
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 167 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] rect
int_in int_in[0] obj
int_in+2 int_in[1] depth

8.8.11 wdlg_set_edit

Name: »WindowDialog Set Edit Object« - Editfeld im Dialog aktivieren.
 
AES-Nummer: 165 (Unterfunktion 0)
 
Deklaration: int16_t wdlg_set_edit ( DIALOG *dialog, int16_t obj );
 
Beschreibung: Die Funktion aktiviert ein Editfeld eines Fensterdialogs. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
obj Nummer des neuen Edit-Objekts bzw. 0, falls keins aktiv sein soll

Hinweis: Aktivieren bedeutet in diesem Zusammenhang, daß der Cursor im angegebenen Objekt gezeichnet, und in einem evtl. vorher aktiven Objekt gelöscht wird.
 
Ergebnis: Die Funktion liefert die Nummer des aktuellen Editobjekts zurück. Ein Wert von 0 bedeutet, daß kein solches aktiv ist.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open   wdlg_close
 

8.8.11.1 Bindings für wdlg_set_edit

C: int16_t wdlg_set_edit ( DIALOG *dialog, int16_t obj );
 
Umsetzung:
 
int16_t wdlg_set_edit ( DIALOG *dialog, int16_t obj )
{
   addr_in[0] = dialog;

   int_in[0] = 0;
   int_in[1] = obj;

   crys_if (165);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 165 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
int_in int_in[0] 0 # Unterfunktion
int_in+2 int_in[1] obj
int_out int_out[0] Return-Wert

8.8.12 wdlg_set_iconify

Name: »WindowDialog Iconify« - Fensterdialog ikonifizieren.
 
AES-Nummer: 165 (Unterfunktion 3)
 
Deklaration: int16_t wdlg_set_iconify ( DIALOG *dialog, GRECT *g, int8_t *title, OBJECT *tree, int16_t obj );
 
Beschreibung: Die Funktion ermöglicht das Ikonifizieren eines Fensterdialogs. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
g neue Position des Fensters
title neuer Fenstertitel, oder NULL
tree neuer Fensterbaum, oder NULL
obj zu zentrierendes Objekt, oder -1

Hinweis: Die neue Position des Fensters wird man normalerweise von der Nachricht WM_ICONIFY übernehmen; es ist aber auch möglich durch Koordinaten von -1,-1,-1,-1 diese direkt von MagiC ermitteln zu lassen.
 
Die Funktion ändert die Position und Größe des Wurzelobjektes. Da man i.a. für ikonifizierte Fenster einen anderen Objektbaum anzeigen möchte, kann dieser im Parameter tree angegeben werden. Der Objektbaum besteht normalerweise nur aus einem Wurzelobjekt (G_BOX) und einem anzuzeigenden Icon vom Typ G_ICON oder G_CICON. Soll das Icon im Fenster zentriert dargestellt werden, so übergibt man dessen Objektnummer im Parameter obj.
 
Beim Setzen eines neuen Fenstertitels ist zu beachten, dass der Aufrufer bei einem späteren Unikonify den alten Titel selbst restaurieren muss.
 
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden. Diese Funktion ist erst ab WDIALOG 1.05 vorhanden. Wenn sie nicht vorhanden ist, enthält intout[0] eine 0.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_set_uniconify
 

8.8.12.1 Bindings für wdlg_set_iconify

C: int16_t wdlg_set_iconify ( DIALOG *dialog, GRECT *g, int8_t *title, OBJECT *tree, int16_t obj );
 
Umsetzung:
 
int16_t wdlg_set_iconify ( DIALOG *dialog, GRECT *g,
                           int8_t *title,
                           OBJECT *tree, int16_t obj )
{
   addr_in[0] = dialog;
   addr_in[1] = g;
   addr_in[2] = title;
   addr_in[3] = tree;

   int_in[0] = 3;
   int_in[1] = obj;

   crys_if (165);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 165 # Opcode der Funktion
control+2 control[1] 2 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 4 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] g
addr_in+8 addr_in[2] title
addr_in+12 addr_in[3] tree
int_in int_in[0] 3 # Unterfunktion
int_in+2 int_in[1] obj
int_out int_out[0] Return-Wert

8.8.13 wdlg_set_size

Name: »WindowDialog Set Size« - Größe eines Dialogs verändern.
 
AES-Nummer: 165 (Unterfunktion 2)
 
Deklaration: int16_t wdlg_set_size ( DIALOG *dialog, GRECT *new_size );
 
Beschreibung: Die Funktion ermöglicht es, die Größe eines Fensterdialogs zu verändern. Es gilt:
 
Parameter Bedeutung
   
dialog Zeiger auf den Dialog
new_size neue Position und Größe der Arbeitsfläche des Fensters

Hinweis: Die Funktion ändert weder Position noch Größe des Wurzelobjektes. Soll dieses verschoben oder vergrößert werden, so müssen die Objektausmaße vor dem Aufruf der Funktion geändert werden.
 
Achtung: Die Buttons müssen sich immer vollständig innerhalb der Arbeitsfläche des Fensters befinden, da form_button die Rechteckliste nicht beachtet. Der normale Anwendungsfall für diese Funktion sind vergrößerbare Dialoge, die ein Sizer-Objekt in der rechten unteren Ecke enthalten.
 
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open   wdlg_close
 

8.8.13.1 Bindings für wdlg_set_size

C: int16_t wdlg_set_size ( DIALOG *dialog, GRECT *new_size );
 
Umsetzung:
 
int16_t wdlg_set_size ( DIALOG *dialog, GRECT *new_size )
{
   addr_in[0] = dialog;
   addr_in[1] = new_size;

   int_in[0] = 2;
   crys_if (165);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 165 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] new_size
int_in int_in[0] 2 # Unterfunktion
int_out int_out[0] Return-Wert

8.8.14 wdlg_set_tree

Name: »WindowDialog Set Tree« - neuen Objektbaum im Dialog verankern.
 
AES-Nummer: 165 (Unterfunktion 1)
 
Deklaration: int16_t wdlg_set_tree ( DIALOG *dialog, OBJECT *new_tree );
 
Beschreibung: Die Funktion verankert einen neuen Objektbaum in einem Dialog. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
new_tree Neuer Objektbaum

Hinweis: Falls das neue Wurzelobjekt eine andere Größe hat, wird die Fenstergröße automatisch angepaßt; der Fensterinhalt wird in jedem Fall aktualisiert.
 
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_open   wdlg_close
 

8.8.14.1 Bindings für wdlg_set_tree

C: int16_t wdlg_set_tree ( DIALOG *dialog, OBJECT *new_tree );
 
Umsetzung:
 
int16_t wdlg_set_tree ( DIALOG *dialog, OBJECT *new_tree )
{
   addr_in[0] = dialog;
   addr_in[1] = new_tree;

   int_in[0] = 1;
   crys_if (165);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 165 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] new_tree
int_in int_in[0] 1 # Unterfunktion
int_out int_out[0] Return-Wert

8.8.15 wdlg_set_uniconify

Name: »WindowDialog Uniconify« - Fensterdialog unikonifizieren.
 
AES-Nummer: 165 (Unterfunktion 4)
 
Deklaration: int16_t wdlg_set_uniconify ( DIALOG *dialog, GRECT *g, int8_t *title, OBJECT *tree );
 
Beschreibung: Die Funktion ermöglicht das Unikonifizieren eines Fensterdialogs. Es gilt:
 

Parameter Bedeutung
dialog Zeiger auf den Dialog
g neue Position des Fensters
title neuer Fenstertitel, oder NULL
tree neuer Fensterbaum, oder NULL

Hinweis: Die neue Position des Fensters wird man normalerweise von der Nachricht WM_UNICONIFY übernehmen.
 
Die Funktion ändert die Position und Größe des Wurzelobjektes. Da man i.a. für ikonifizierte Fenster einen anderen Objektbaum angezeigt hatte, kann der ursprüngliche Baum im Parameter tree angegeben und damit zurückgesetzt werden. Über den Parameter title kann der alte Fenstertitel gesetzt werden, der vor dem Ikonify gültig war.
 
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
 
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden. Diese Funktion ist erst ab WDIALOG 1.05 vorhanden. Wenn sie nicht vorhanden ist, enthält intout[0] eine 0.
 
Gruppe: Fensterdialoge
 
Querverweis: Binding   wdlg_set_iconify
 

8.8.15.1 Bindings für wdlg_set_uniconify

C: int16_t wdlg_set_uniconify ( DIALOG *dialog, GRECT *g, int8_t *title, OBJECT *tree );
 
Umsetzung:
 
int16_t wdlg_set_uniconify ( DIALOG *dialog, GRECT *g,
                             int8_t *title, OBJECT *tree )
{
   addr_in[0] = dialog;
   addr_in[1] = g;
   addr_in[2] = title;
   addr_in[3] = tree;

   int_in[0] = 4;

   crys_if (165);

   return ( int_out[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
control control[0] 165 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 4 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] dialog
addr_in+4 addr_in[1] g
addr_in+8 addr_in[2] title
addr_in+12 addr_in[3] tree
int_in int_in[0] 4 # Unterfunktion
int_out int_out[0] Return-Wert

Home AESAES EreignisverwaltungEreignisverwaltung FensterverwaltungFensterverwaltung