HomeAESEditobjekt-FunktionenFensterdialoge

8.7 Ereignisverwaltung

Diese Bibliothek stellt Funktionen zur Verfügung, mit deren Hilfe Ereignisse erkannt und bearbeitet werden können. Für diesen Zweck stehen die folgenden Routinen zur Verfügung:

evnt_button Auf Maustastendruck warten.
evnt_dclick Geschwindigkeit für Doppelklicks ermitteln/ändern.
evnt_keybd Auf Tastendruck warten.
evnt_mesag Auf Mitteilung warten.
evnt_mouse Auf Bewegungen des Mauszeigers warten.
evnt_multi Auf mehrere Ereignisse reagieren.
evnt_timer Auf Zeit-Ereignis warten.
Standard-Nachrichten  
Nachrichten-Liste Übersicht von allen bekannten Nachrichten

Hinweis: Unter Ereignissen sind in diesem Fall Nachrichten, Tastaturklicks, Mausbewegungen, Zeitereignisse usw. zu verstehen.

Querverweis: AES   GEM   Style-Guidelines

8.7.1 evnt_button

Name: »Event Button« - wartet auf einen Mausknopfereignis.
AES-Nummer: 21
Deklaration: int16_t evnt_button ( int16_t ev_bclicks, int16_t ev_bmask, int16_t ev_bstate, int16_t *ev_bmx, int16_t *ev_bmy, int16_t *ev_bbutton, int16_t *ev_bkstate );
Beschreibung: Die Funktion wartet auf einen Button-Event, d.h. bis die in ev_bmask spezifizierten Mausknöpfe in den in ev_bstate angegeben Zustand versetzt werden. Genauer:

Die Funktion wartet bis das verlangte Ereignis einmal eingetreten ist. Danach wird gewartet und kontrolliert, ob das Ereignis noch einmal auftritt. Falls das Ereignis ev_bclicks mal eingetreten (oder die über evnt_dclick einstellbare Zeit abgelaufen) ist, kehrt die Funktion sofort zurück.
Parameter Bedeutung
   
ev_bclicks maximale Anzahl der Klicks
ev_bmask einen Bitvektor, der die zu betrachtenden Knöpfe mit einer 1 maskiert. Dabei gilt
Bit-0 = linker Knopf
Bit-1 = rechter Knopf.
Bit-2 = mittlerer Knopf, PC-GEM
ev_bstate einen Bitvektor wie ev_bmask, der für jeden Knopf festlegt welchen Status er erreichen muß. Es gilt:
0 = nicht gedrückt
1 = gedrückt
ev_bmx  
ev_bmy die x bzw. y Koordinate der Maus zum Zeitpunkt des Auftretens des Ereignisses
ev_bbutton der Zustand der Mausknöpfe beim Auftreten des Ereignisses (analog ev_bstate)
ev_bkstate den Zustand der Sondertasten der Tastatur beim Auftreten des Ereignisses
0x001 = rechte Shifttaste
0x002 = linke Shifttaste
0x004 = Controltaste
0x008 = Alternatetaste

Bei gedrückter Taste wird das entsprechende Bit gesetzt


Hinweis: Ab PC-GEM/3 unterstützen die Event-Funktionen nur noch eine Maustaste. Obwohl offiziell nicht dokumentiert, ist es auch möglich beide Maustasten unabhängig voneinander abzufragen. Die folgende Methode wird z.B. vom Atari-Desktop benutzt, und funktioniert seit TOS 1.0:

ev_bclicks += 0x100;

In diesem Fall wird auf das folgende Ereignis gewartet: (ev_bstate & ev_bmask) != (*ev_bbutton & ev_bmask)
Ergebnis: Die Funktion liefert die Anzahl der tatsächlich vorgenommenen Mausklicks.
Verfügbar: All AES versions.
Gruppe: Ereignisverwaltung
Querverweis: Binding   evnt_multi   Nachrichten

8.7.1.1 Bindings für evnt_button

C: int16_t evnt_button ( int16_t ev_bclicks, int16_t ev_bmask, int16_t ev_bstate, int16_t *ev_bmx, int16_t *ev_bmy, int16_t *ev_bbutton, int16_t *ev_bkstate );
Umsetzung:
int16_t evnt_button (int16_t ev_bclicks, int16_t ev_bmask,
                     int16_t ev_bstate,  int16_t *ev_bmx,
                     int16_t *ev_bmy, int16_t *ev_bbutton,
                     int16_t *ev_bkstate )
{
   int_in[0] = ev_bclicks;
   int_in[1] = ev_bmask;
   int_in[2] = ev_bstate;

   crys_if (21);

   *ev_bmx     = int_out[1];
   *ev_bmy     = int_out[2];
   *ev_bbutton = int_out[3];
   *ev_bkstate = int_out[4];

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

Adresse Feldelement Belegung
control control[0] 21 # Opcode der Funktion
control+2 control[1] 3 # Einträge in int_in
control+4 control[2] 5 # Einträge in int_out
control+6 control[3] 0 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ev_bclicks
int_in+2 int_in[1] ev_bmask
int_in+4 int_in[2] ev_bstate
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ev_bmx
int_out+4 int_out[2] ev_bmy
int_out+6 int_out[3] ev_bbutton
int_out+8 int_out[4] ev_bkstate

8.7.2 evnt_dclick

Name: »Event Doubleclick« - ermittelt oder legt den Zeitraum zwischen den beiden Klicks eines Doppelklicks fest.
AES-Nummer: 26
Deklaration: int16_t evnt_dclick ( int16_t ev_dnew, int16_t ev_dgetset );
Beschreibung: Die Funktion setzt oder ermittelt die Geschwindigkeit mit der Doppelklicks der Maus ausgeführt werden müssen. Es gilt:

Parameter Bedeutung
ev_dnew neue Geschwindigkeit von 0 (langsam) bis 4 (schnell).
ev_dgetset 0 = aktuellen Wert ermitteln
  1 = neuen Wert setzen


Hinweis: Man sollte immer daran denken, daß es Menschen gibt, die mit zu hohen Geschwindigkeiten Probleme haben, und dann keine Doppelklicks mehr ausführen können.

Die Funktion wird in älteren GEM-Dokumentationen häufig auch evnt_dclicks genannt.
Ergebnis: Die Funktion liefert die gültige Geschwindigkeit für Doppelklicks zurück.
Verfügbar: All AES versions.
Gruppe: Ereignisverwaltung
Querverweis: Binding   Nachrichten

8.7.2.1 Bindings für evnt_dclick

C: int16_t evnt_dclick ( int16_t ev_dnew, int16_t ev_dgetset );
Umsetzung:
int16_t evnt_dclick (int16_t ev_dnew, int16_t ev_dgetset)
{
   int_in[0] = ev_dnew;
   int_in[1] = ev_dgetset;

   return ( crys_if(26) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 26 # 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] 0 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ev_dnew
int_in+2 int_in[1] ev_dgetset
int_out int_out[0] Return-Wert

8.7.3 evnt_keybd

Name: »Event Keyboard« - wartet auf ein Tastaturereignis.
AES-Nummer: 20
Deklaration: int16_t evnt_keybd ( void );
Beschreibung: Die Funktion wartet auf ein Tastaturereignis, und gibt den entsprechenden Code zurück.

Hinweis: Tastatur-Events werden immer nur der Applikation gemeldet, die das aktive Fenster besitzt.
Ergebnis: Die Funktion liefert in den Bits 0..7 den ASCII-Code, und in den Bits 8..15 den Scan-Code der gedrückten Taste.
Verfügbar: All AES versions.
Gruppe: Ereignisverwaltung
Querverweis: Binding   evnt_multi   Nachrichten

8.7.3.1 Bindings für evnt_keybd

C: int16_t evnt_keybd ( void );
Umsetzung:
int16_t evnt_keybd (void)
{
   return ( crys_if (20) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 20 # 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] 0 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_out int_out[0] Return-Wert

8.7.4 evnt_mesag

Name: »Event Message« - wartet auf eine Mitteilung des AES.
AES-Nummer: 23
Deklaration: int16_t evnt_mesag ( int16_t *msg );
Beschreibung: Die Funktion wartet bis in der Message-Pipe der Applikation ein Ereignis vorliegt.

Der Parameter msg ist ein Zeiger auf den 16 Bytes großen Nachrichten-Puffer.
Ergebnis: Als Ergebnis wir immer 1 zurückgegeben.
Verfügbar: All AES versions.
Gruppe: Ereignisverwaltung
Querverweis: Binding   Nachrichten

8.7.4.1 Bindings für evnt_mesag

C: int16_t evnt_mesag ( int16_t *msg );
Umsetzung:
int16_t evnt_mesag (int16_t *msg)
{
   addr_in[0] = msg;
   return ( crys_if (23) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 23 # 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
int_out int_out[0] Return-Wert
addr_in addr_in[0] msg

8.7.5 evnt_mouse

Name: »Event Mouse« - wartet darauf, daß der Mauszeiger in einen Bereich hinein- oder hinausgeschoben wird.
AES-Nummer: 22
Deklaration: int16_t evnt_mouse ( int16_t ev_moflags, int16_t ev_mox, int16_t ev_moy, int16_t ev_mowidth, int16_t ev_moheight, int16_t *ev_momx, int16_t *ev_momy, int16_t *ev_mobutton, int16_t *ev_mokstate );
Beschreibung: Die Funktion wartet darauf, bis der Mauszeiger einen bestimmten Teil des Bildschirms betritt oder verläßt.
Parameter Bedeutung
   
ev_moflags
0 = Ereignis beim Betreten
1 = Ereignis beim Verlassen
ev_mox, x-Koordinate
ev_moy y-Koordinate des zu überwachenden Rechtecks
ev_mowidth, Breite und
ev_moheight Höhe des zu überwachenden Rechtecks
ev_momx, x-Koordinate
ev_momy y-Koordinate des Mauszeigers beim Betreten bzw. Verlassen des Rechtecks
ev_mobutton der Zustand der Mausknöpfe (Bit-0 = linker Knopf, Bit-1 = rechter Knopf)
ev_mokstate den Zustand der Sondertasten bei Auftreten des Ereignisses. Es gilt:
0x0001 = Shift-rechts
0x0002 = Shift-links
0x0004 = Control
0x0008 = Alternate
Ergebnis: Als Ergebnis wird immer eine 1 zurückgeliefert.
Verfügbar: All AES versions.
Gruppe: Ereignisverwaltung
Querverweis: Binding   Nachrichten

8.7.5.1 Bindings für evnt_mouse

C: int16_t evnt_mouse ( int16_t ev_moflags, int16_t ev_mox, int16_t ev_moy, int16_t ev_mowidth, int16_t ev_moheight, int16_t *ev_momx, int16_t *ev_momy, int16_t *ev_mobutton, int16_t *ev_mokstate );
Umsetzung:
int16_t evnt_mouse (int16_t ev_moflags, int16_t ev_mox,
                    int16_t ev_moy, int16_t ev_mowidth,
                    int16_t ev_moheight, int16_t *ev_momx,
                    int16_t *ev_momy, int16_t *ev_mobutton,
                    int16_t *ev_mokstate)
{
   int_in[0] = ev_moflags;
   int_in[1] = ev_mox;
   int_in[2] = ev_moy;
   int_in[3] = ev_mowidth;
   int_in[4] = ev_moheight;

   crys_if (22);

   *ev_momx     = int_out[1];
   *ev_momy     = int_out[2];
   *ev_mobutton = int_out[3];
   *ev_mokstate = int_out[4];

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

Adresse Feldelement Belegung
control control[0] 22 # Opcode der Funktion
control+2 control[1] 5 # Einträge in int_in
control+4 control[2] 5 # Einträge in int_out
control+6 control[3] 0 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ev_moflags
int_in+2 int_in[1] ev_mox
int_in+4 int_in[2] ev_moy
int_in+6 int_in[3] ev_mowidth
int_in+8 int_in[4] ev_moheight
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ev_momx
int_out+4 int_out[2] ev_momy
int_out+6 int_out[3] ev_mobutton
int_out+8 int_out[4] ev_mokstate

8.7.6 evnt_multi

Name: »Event Multi« - wartet auf ein beliebiges Ereignis.
AES-Nummer: 25
Deklaration: int16_t evnt_multi ( int16_t ev_mflags, int16_t ev_mbclicks, int16_t ev_mbmask, int16_t ev_mbstate, int16_t ev_mm1flags, int16_t ev_mm1x, int16_t ev_mm1y, int16_t ev_mm1width, int16_t ev_mm1height, int16_t ev_mm2flags, int16_t ev_mm2x, int16_t ev_mm2y, int16_t ev_mm2width, int16_t ev_mm2height, int16_t *ev_mmgpbuff, int16_t ev_mtlocount, int16_t ev_mthicount, int16_t *ev_mmox, int16_t *ev_mmoy, int16_t *ev_mmbutton, int16_t *ev_mmokstate, int16_t *ev_mkreturn, int16_t *ev_mbreturn );
Beschreibung: Die evnt_multi Funktion wartet auf eine Reihe verschiedener Events.
Parameter Bedeutung
   
ev_mflags gewünschtes Ereignis:
MU_KEYBD      (0x0001) Tastaturereignis
MU_BUTTON     (0x0002) Buttonereignis
MU_M1         (0x0004) Mausereignis 1
MU_M2         (0x0008) Mausereignis 2
MU_MESAG      (0x0010) Nachrichten
MU_TIMER      (0x0020) Zeitereignisse
MU_WHEEL      (0x0040) Mausrad, XaAES
MU_MX         (0x0080) Mausbewegung, XaAES
MU_KEYBD4     (0x0100) GEM/4
MU_NORM_KEYBD (0x0100) normierte Tastenkodes, XaAES
MU_DYNAMIC_KEYBD (0x0200) XaAES, noch nicht vorhanden
X_MU_DIALOG   (0x4000) (Geneva)
ev_mbclicks Anzahl der Klicks, siehe ev_bclicks in evnt_button
ev_mbmask welche Mausknöpfe sollen betrachtet werden (Format siehe ev_bmask in evnt_button)
ev_mbstate welchen Zustand müssen die Mausknöpfe einnehmen (Format, siehe ev_bstate in evnt_button)
ev_mm1flags soll der Event beim Betreten (0) oder Verlassen (1) des ersten Rechtecks ausgelöst werden, siehe ev_moflags in evnt_mouse
ev_mm1x,  
ev_mm1y x und y Koordinate des ersten Rechtecks, siehe ev_mox, ev_moy in evnt_mouse
ev_mm1width die Breite des ersten Rechtecks, siehe ev_mowidth in evnt_mouse
ev_mm1height die Höhe des ersten Rechtecks, siehe ev_moheight in evnt_mouse
ev_mm2flags,  
ev_mm2x,  
ev_mm2y,  
ev_mm2width,  
ev_mm2height sind die Parameter für das zweite Maus-Event Rechteck
ev_mmgpbuff ein 16 Byte Messagebuffer, siehe evnt_mesag und ev_mgpbuff
ev_mtlocount low-Word für den Timercounter, siehe evnt_timer
ev_mthicount high-Word für den Timercounter, siehe evnt_timer Achtung: Unter TOS 1.0 darf in einem Accessorie der Timer nicht auf 0 gesetzt werden, sonst hängt sich das System auf.
ev_mmox,  
ev_mmoy die x und y Koordinate des Mauszeigers beim Auftreten des Events, siehe evnt_mouse, (MU_WHEEL)
ev_mmobutton Zustand der Mausknöpfe beim Auftreten des Events (Format siehe evnt_button)
ev_mmokstate den Zustand der Sondertasten der Tastatur beim Auftreten des Events (Format, siehe evnt_button)
Bei MU_WHEEL: Radnummer
ev_mkreturn der Scancode der gedrückten Taste
ev_mbreturn Anzahl der Klicks mit der Maustaste
Bei MU_WHEEL: Anzahl der Radumdrehungen


Hinweis: Durch die große Anzahl der zu übergebenden Parameter verbraucht diese Funktion relativ viel CPU-Zeit; denn die Parameter müssen zunächst auf dem Stack abgelegt, und dann noch auf die Eingabefelder des GEM verteilt werden.

MU_WHEEL:
Wird nur versendet wenn es keine obenliegendes Fenster gibt oder das Fenster keine Pfeile besitzt.

MU_MX:
Es wird jede Bewegung der Maus gemeldet (ev_mmox, ev_mmoy), zusätzlich noch erfolgt noch die Rückgabe des Status der Tastaur.

MU_KEYBD4:
Used internally in GEM/4 to check for a context-sensitive help request.

MU_NORM_KEYBD:
Wenn das Ereignis MU_NORM_KEYBD mit in die Ergenismaske aufgenommen wird, bekommt die Applikation anstatt den standard AES Scancode einen normaliesierten Tastencode (NKCC) und Staus der Maus geliefert. Wird in der Maske MU_KEYBD und MU_NORM_KEYBD angeben, wird immer MU_NORM_KEYBD geliefert. Die Rückgabe erfolgt in ev_mmokstate und ev_mkreturn, wobei bei der gleichen Wert besitzen.

X_MU_DIALOG:
If the ev_mflags parameter has bit 14 set (ev_mflags|=X_MU_DIALOG), any mouse clicks and keyboard actions within windows containing dialogs will cause the ev_mwhich return value from evnt_multi to have bit 14 set.
When this happens, ev_mmgpbuff word 2 contains the index of the object within the dialog which was selected. If the object was a TOUCHEXIT button and the user double-clicked on it, then bit 15 will be set, similar to the way form_do works. Word 3 of the message buffer ev_mmgpbuff contains the window handle of the window in which the event occurred.
This feature is used in conjunction with the wind_set option X_WF_DIALOG.
Ergebnis: Als Ergebnis liefert die Funktion die Nummer des oder der aufgetretenen Events im oben angegebenen Format.
Verfügbar: In allen AES Versionen.
Gruppe: Ereignisverwaltung
Querverweis: Binding   evnt_keybd   evnt_button   evnt_mouse   evnt_mesag   evnt_timer   evnt_dclick   Nachrichten

8.7.6.1 Bindings für evnt_multi

C: int16_t evnt_multi ( int16_t ev_mflags, int16_t ev_mbclicks, int16_t ev_mbmask, int16_t ev_mbstate, int16_t ev_mm1flags, int16_t ev_mm1x, int16_t ev_mm1y, int16_t ev_mm1width, int16_t ev_mm1height, int16_t ev_mm2flags, int16_t ev_mm2x, int16_t ev_mm2y, int16_t ev_mm2width, int16_t ev_mm2height, int16_t *ev_mmgpbuff, int16_t ev_mtlocount, int16_t ev_mthicount, int16_t *ev_mmox, int16_t *ev_mmoy, int16_t *ev_mmbutton, int16_t *ev_mmokstate, int16_t *ev_mkreturn, int16_t *ev_mbreturn );
Umsetzung:
int16_t evnt_multi (int16_t ev_mflags,  int16_t ev_mbclicks,
                    int16_t ev_mbmask,  int16_t ev_mbstate,
                    int16_t ev_mm1flags, int16_t ev_mm1x,
                    int16_t ev_mm1y, int16_t ev_mm1width,
                    int16_t ev_mm1height, int16_t ev_mm2flags,
                    int16_t ev_mm2x, int16_t ev_mm2y,
                    int16_t ev_mm2width, int16_t ev_mm2height,
                    int16_t *ev_mmgpbuff, int16_t ev_mtlocount,
                    int16_t ev_mthicount, int16_t *ev_mmox,
                    int16_t *ev_mmoy, int16_t *ev_mmbutton,
                    int16_t *ev_mmokstate, int16_t *ev_mkreturn,
                    int16_t *ev_mbreturn)
{
   int_in[0]  = ev_mflags;
   int_in[1]  = ev_mbclicks;
   int_in[2]  = ev_mbmask;
   int_in[3]  = ev_mbstate;
   int_in[4]  = ev_mm1flags;
   int_in[5]  = ev_mm1x;
   int_in[6]  = ev_mm1y;
   int_in[7]  = ev_mm1width;
   int_in[8]  = ev_mm1height;
   int_in[9]  = ev_mm2flags;
   int_in[10] = ev_mm2x;
   int_in[11] = ev_mm2y;
   int_in[12] = ev_mm2width;
   int_in[13] = ev_mm2height;
   int_in[14] = ev_mtlocount;
   int_in[15] = ev_mthicount;
   addr_in[0] = ev_mmgpbuff;

   crys_if (25);

   *ev_mmox      = int_out[1];
   *ev_mmoy      = int_out[2];
   *ev_mmbutton  = int_out[3];
   *ev_mmokstate = int_out[4];
   *ev_mkreturn  = int_out[5];
   *ev_mbreturn  = int_out[6];

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

Adresse Feldelement Belegung
control control[0] 25 # Opcode der Funktion
control+2 control[1] 16 # Einträge in int_in
control+4 control[2] 7 # 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
int_in int_in[0] ev_mflags
int_in+2 int_in[1] ev_mbclicks
int_in+4 int_in[2] ev_mbmask
int_in+6 int_in[3] ev_mbstate
int_in+8 int_in[4] ev_mm1flags
int_in+10 int_in[5] ev_mm1x
int_in+12 int_in[6] ev_mm1y
int_in+14 int_in[7] ev_mm1width
int_in+16 int_in[8] ev_mm1height
int_in+18 int_in[9] ev_mm2flags
int_in+20 int_in[10] ev_mm2x
int_in+22 int_in[11] ev_mm2y
int_in+24 int_in[12] ev_mm2width
int_in+26 int_in[13] ev_mm2height
int_in+28 int_in[14] ev_mtlocount
int_in+30 int_in[15] ev_mthicount
int_out int_out[0] Return-Wert
int_out+2 int_out[1] ev_mmox
int_out+4 int_out[2] ev_mmoy
int_out+6 int_out[3] ev_mmbutton
int_out+8 int_out[4] ev_mmokstate
int_out+10 int_out[5] ev_mkreturn
int_out+12 int_out[6] ev_mbreturn
addr_in addr_in[0] ev_mmgpbuff

8.7.7 evnt_timer

Name: »Event Timer« - wartet einen Zeitabschnitt ab.
AES-Nummer: 24
Deklaration: int16_t evnt_timer ( int16_t ev_tlocount, int16_t ev_thicount );
Beschreibung: Die Funktion wartet bis eine bestimmte Zeit vergangen ist. Es gilt:

Parameter Bedeutung
ev_tlocount Low-Word der Millisekunden
ev_thicount High-Word der Millisekunden


Hinweis: Für Warteschleifen in Programmen sollte immer diese Funktion benutzt werden. Das Betriebssystem kann dann (auch ohne echtes Multitasking) einem anderen Prozess die CPU zuteilen.

Unter TOS 1.0 darf in einem Accessorie der Timer nicht auf 0 gesetzt werden, sonst hängt sich das System auf.
Ergebnis: Als Ergebnis wird immer eine 1 zurückgeliefert.
Verfügbar: All AES versions.
Gruppe: Ereignisverwaltung
Querverweis: Binding   Nachrichten

8.7.7.1 Bindings für evnt_timer

C: int16_t evnt_timer ( int16_t ev_tlocount, int16_t ev_thicount );
Umsetzung:
int16_t evnt_timer (int16_t ev_tlocount, int16_t ev_thicount)
{
   int_in[0] = ev_tlocount;
   int_in[1] = ev_thicount;

   return ( crys_if (24) );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 24 # 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] 0 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
int_in int_in[0] ev_tlocount
int_in+2 int_in[1] ev_thicount
int_out int_out[0] Return-Wert

8.7.8 Nachrichten

Die Standardmessages des Screenmanagers sind wie folgt aufgebaut:

msg[0] Art der Message
msg[1] ID der Applikation, die die Nachricht abgeschickt hat
msg[2] Anzahl der Bytes die über die Standardlänge von 16 Bytes hinausgehen, und dann mit appl_read gelesen werden müssen

Arten der Standardmessages:

Nachricht Bedeutung
   
AC_CLOSE (41) wird an ein Accessory geschickt, wenn die aktuelle Applikation beendet, der Bildschirm gelöscht und der Windowmanager neu initialisiert wird.
msg[3] Identifikator des Accessories


Hinweis: Diese Nachricht spielt in Multitaskingsystemen praktisch keine Rolle mehr, und ist in MagiC auch nicht mehr vorhanden!
AC_OPEN (40) ein Accessory wurde aktiviert
msg[4] Identifikator des Accessories
PC-GEM liefert diese Information in msg[3]! KAOS 1.4.2 setzt beide Einträge.


Geneva have the following extension:
If an application sends an AC_OPEN message to another application, it can optionally set word 4 of the message to -1. In this case, Geneva will automatically substitute the correct menu identifier for the application in word 4. Example to open application with ID #5:

int buf[8]im { AC_OPEN, 5, 0, my_apid, -1 };
appl_write( 5, 16, buf );

Sending an AC_OPEN message to a desk accessory will cause it to open if it is not already open, or it will make its window topmost (by sending a WM_TOPPED message) if the desk accessory has a window open. An application will receive a WM_TOPPED message, if it has a window open.
AP_DRAGDROP (63) ist ein Teil des Drag&Drop-Protokolls und wird vom Sender an den Empfänger geschickt.
msg[3] Kennung des Zielfensters
msg[4] X-Position des Mauszeigers
msg[5] Y-Position des Mauszeigers
msg[6] Keyboard-Shift-Status
msg[7] zwei Zeichen der Pipe-Extension


Hinweis: Wird anstelle einer gültigen Fensterkennung der Wert -1 übergeben, so ist das Ziel der Drag&Drop Operation kein spezielles Fenster, sondern die Applikation selbst. Es sollte dann normalerweise ein zusätzliches Fenster für die angegebenen Daten geöffnet werden.
AP_RESCHG (57) durch diese Nachricht wird die betreffende Applikation darüber informiert, daß ein Auflösungswechsel stattfinden soll. Der Empfänger dieser Nachricht sollte sich dann sobald wie möglich beenden.
AP_TERM (50) das Betriebssystem fordert die Applikation auf, sich zu beenden. Dies kann z.B. beim Auflösungswechsel notwendig sein, oder von einem allgemeinen Shut-Down Utility ausgelöst werden.
msg[5] Grund des Shut-Downs, also z.B.
AP_TERM (generell beenden)
AP_RESCHG (Auflösungswechsel)


Achtung: Entgegen der üblichen Konvention muss in msg[1] der Wert -1 eingetragen werden, da lt. MagiC Dokumentation sonst nicht garantiert ist, daß der Desktop von einer Shut-Down-Sequenz (Alternate-Control-Delete) ausgeht.
AP_TFAIL (51) wird vom Empfänger einer AC_CLOSE bzw. AP_TERM Nachricht verschickt, falls dieser sich nicht beenden möchte oder kann.
CH_EXIT (90) wird an den Parent-Prozess geschickt, wenn ein Child terminiert.
msg[3] Applikations-ID des Childs
msg[4] Exit-Code des Childs
CT_KEY (53) wird vom modularen Kontrollfeld XCONTROL verschickt, um Tastendrücke auswerten zu können, die keine Auswirkungen auf Editfelder haben können, also z.B. HELP oder UNDO.
msg[3] Highbyte: Scancode der gedrückten Taste.
Lowbyte : ASCII-Code der Taste.
FNT_CHANGED (83) wird verschickt, wenn zur Laufzeit GDOS-Fonts an- bzw. abgemeldet wurden.
Auf den Empfang dieser Nachricht sollte mit vst_unload_fonts und direkt anschließendem vst_load_fonts reagiert werden. Dadurch ist sichergestellt, daß die Applikation mit den aktuellen Zeichensätzen arbeiten kann.
MN_SELECTED (10) ein Menüeintrag wurde ausgewählt
msg[3] Objektnummer des Titeleintrags
msg[4] Objektnummer des Eintrags
msg[5] Zeiger auf die OBJECT-Struktur des Menübaums, wie er auch an
msg[6] menu_bar übergeben wurde.
msg[7] Parent des angewählten Eintrags, d.h. die Objektnummer der 'heruntergefallenen' Box, die den Eintrag enthält.


Hinweis: Das Vorhandensein der erweiterten Nachricht (msg[5] und folgende) sollte am besten per appl_getinfo (Opcode 9) ermittelt werden.
PRN_CHANGED (82) Diese Nachricht wird vom GDOS-Konfigurationsprogramm an alle erreichbaren Applikationen verschickt, um diese über Änderungen an Gerätetreibern zu informieren. Es gilt:
msg[3] Gerätenummer
msg[4] Aktion
0 = neu
1 = geändert
2 = entfernt


Eine Applikation kann nach dem Empfang dieser Nachricht z.B. die entsprechende Workstation neu öffnen, die jetzt aktuellen Einstellungen ermitteln, und einen evtl. Preview neu anbieten.
RESCH_COMPLETED (61) diese Nachricht wird an diejenige Applikation geschickt, die einen Auflösungswechsel eingeleitet hat. Wenn kein Fehler aufgetreten ist, muß diese sich nun auch beenden.
msg[3] Status (0 = Fehler, 1 = OK)
SC_CHANGED (80) diese Nachricht sollte von einem Programm an alle anderen Applikationen im System verschickt werden, wenn dieses den Inhalt des GEM-Klemmbrettes verändert hat.
msg[3] Beschreibung des File-Formats:
0x0000 = keine genauere Spezifizierung
0x0001 = Daten für eine Datenbank
0x0002 = Textdateien
0x0004 = Vektor-Grafiken
0x0008 = Raster-Grafiken
0x0010 = Spreadsheet-Daten
0x0020 = Samples, MIDI-Files, Sound
0x0040 = Archivdateien (z.B. ".zip", ".lzh")
0x8000 = Systemdateien (z.B. Farbpaletten)

Dabei sollte das Format 0x0000 nach Möglichkeit vermieden werden!
msg[4] 4 Zeichen, die das "beste" Format (möglichst wenig Informationsverlust) für
msg[5] den Datenimport beschreiben. Beispiel: ".RTF" statt ".TXT"
msg[6] reserviert, 0
msg[7] reserviert, 0
SH_WDRAW (72) diese Nachricht sollte von einer Applikation an die System-Shell versandt werden, wenn der Inhalt eines Laufwerkes verändert worden ist. Die Shell kann daraufhin die entsprechenden Fenster aktualisieren.
msg[3] Laufwerk (0 = A, 1 = B, usw).


Hinweis: Ein Wert von -1 bedeutet, daß die Shell alle Fenster aktualisieren soll.
SHUT_COMPLETED (60) wird vom Betriebssystem an den Initiator eines Shut-Down geschickt, wenn alle anderen Applikationen davon bereits informiert wurden, und diese positiv reagiert haben.
SM_M_SPECIAL (101) diese Nachricht steht nur unter MagiC (ab Version 2.0) zur Verfügung, und muß an den Screen-Manager geschickt werden.
msg[3] 0
msg[4] 'MA'
msg[5] 'GX'
msg[6] gewünschte Aktion; es gilt:
0 = Redraw ausführen
1 = Applikation beenden
2 = auf Applikation umschalten
3 = Applikation einfrieren
4 = Applikation wieder auftauen
5 = z.Zt. keine Information bekannt
6 = alle Applikationen einblenden
7 = andere Applikationen ausblenden
8 = aktuelle Applikation ausblenden
msg[7] 0


Hinweis: Die Codes 6..8 von msg[6] stehen dabei erst ab MagiC Version 3.1 zur Verfügung.
Bei "Redraw ausführen" und "alle Applikationen einblenden" muß als ID die des Screenmanager (1) angegeben werden.
THR_EXIT (88) Diese Nachricht wird an den Thread bzw. die Applikation geschickt, der bzw. die den beendeten Thread erzeugt hat. Es gilt:
msg[3] AES ID des beendeten Threads
msg[4] Rückgabe- bzw. Fehlercode als
msg[5] LONG-Wert
WM_ALLICONIFY (36) alle Fenster der Applikation sollen zu einem ikonifizierten Fenster zusammengefaßt werden.
msg[4] X-Koordinate
msg[5] Y-Koordinate
msg[6] Breite
msg[7] Höhe des ikonifizierten Fensters
WM_ARROWED (24) ein Pfeil oder Rollbalken wurde angeklickt.
msg[3] Handle des Fensters
msg[4] einer der folgenden Werte:
WA_UPPAGE (0) = Seite nach oben
WA_DNPAGE (1) = Seite nach unten
WA_UPLINE (2) = Zeile nach oben
WA_DNLINE (3) = Zeile nach unten
WA_LFPAGE (4) = Seite nach links
WA_RTPAGE (5) = Seite nach rechts
WA_LFLINE (6) = Spalte nach links
WA_RTLINE (7) = Spalte nach rechts
WA_WHEEL  (8) = siehe unten


Ab XaAES v0.960 gibt es einer Erweiterung dieser Nachricht, da es neue Treiber für Mäuse mit Rädern gibt.
msg[5] 'MW' (0x4d57) oder 'Mw' (0x4d77)
'MW' (0x4d57) für die erste Mausrad Drehung
'Mw' (0x4d77) für jeder weitere
msg[6] 0
msg[7] Aktuelle Nummer der Mausrad Drehung. Damit kann man mehrere Drehungen zusammenfassen, z.B. zu einer Bewegung des Sliders.


Es besteht aber auch die Möglichkeit per WF_WHEEL echte Nachrichten der Mausrad Drehung zu bekommen.
msg[4] WA_WHEEL (8)
msg[6] Nummer des Rädchen
msg[7] Anzahl der Mausrad Drehung. Damit kann man mehrere Drehungen zusammenfassen, z.B. zu einer Bewegung des Sliders.


Falls WINX installiert ist kann es zu einer erweiterten WM_ARROWE Nachricht kommen.
msg[5] negierter Geschwindigkeitsfaktor für msg[4]
msg[6] Scrollart und Richtung, mögliche Werte wie msg[4]
msg[7] negierter Geschwindigkeitsfaktor für msg[6]


Man sollte so vorgehen:
Ist [5] >=0, dann handelt es sich um eine normale Scrollnachricht.
Ist [5] < 0, dann negiert man den Wert und erhält den Faktor für [4]
Ist [7] < 0, dann negiert man den Wert und erhält den Faktor für [6]
ansonsten wird [6] ignoriert

Beispiel:
Erhält man z.B. [WM_ARROWED 1 0 win WA_DNLINE -2 WA_RTLINE -1], dann sollte man zwei Zeilen nach unten und eine Spalte nach rechts scrollen.
WM_BACKDROPPED (31)
msg[3] Handle des betreffenden Fensters


Beim betätigen des Backdrop-Button des Fensters bekommt die Applikation diese Meldung. Nur in KAOS 1.4.2 sowie MagiC 1 und 2 vorhanden. Seit MagiC Version 3 wird WM_BOTTOMED verschickt.
WM_BOTTOMED (33) wird vom Screen-Manager benutzt um die Applikation aufzufordern, ein Fenster in den Hintergrund zu legen.
msg[3] Handle des betreffenden Fensters


Hinweis: das Fenster kann von der Applikation dann einfach per wind_set (msg[3], WF_BOTTOM, 0, 0 ,0, 0) in den Hintergrund gelegt werden. Unter MagiC 2.0 heißt diese Meldung noch WM_M_BDROPPED.
WM_CLOSED (22) das oberste Fenster soll geschlossen werden
msg[3] Handle des zu schließenden Fensters
WM_FULLED (23) der Fullsizeknopf des obersten Fensters wurde angeklickt.
msg[3] Handle des Fensters, das auf volle Größe gebracht werden soll
WM_HSLID (25) der horizontale Rollbalken wurde verschoben
msg[3] Handle des Fensters
msg[4] die neue Sliderposition:
0000 = ganz links
1000 = ganz rechts
WM_ICONIFY (34) ein Fenster der Applikation soll ikonifiziert werden.
msg[3] Kennung des betreffenden Fensters
msg[4] X-Koordinate
msg[5] Y-Koordinate
msg[6] Breite
msg[7] Höhe des ikonifizierten Fensters
WM_M_BDROPPED (100) wird vom Screen-Manager benutzt um die Applikation aufzufordern, ein Fenster in den Hintergrund zu legen. Ab MagiC 3 wird nicht mehr dieser Opcode, sondern WM_BOTTOMED verschickt.
msg[3] Handle des betreffenden Fensters
WM_MOVED (28) das ganze Fenster wurde verschoben
msg[3] Handle des Fensters
msg[4] neue x-Koordinate
msg[5] neue y-Koordinate
msg[6] neue Fensterbreite (unverändert)
msg[7] neue Fensterhöhe (unverändert)
WM_NEWTOP (29) das Fenster wurde nach oben gebracht
msg[3] Handle des Fensters
WM_ONTOP (31) ein Fenster wird (nach dem Schließen oder Deaktivieren eines anderen Fensters) zum aktuellen bzw. aktiven.
msg[3] Handle des betreffenden Fensters


Hinweis: zum Zeitpunkt der Ankunft der Nachricht kann sich der Fensterstapel bereits wieder verändert haben. Die Nachricht wird nur verschickt, wenn die Applikation nicht mit einem Aufruf das Fenster selbst in den Vordergrund gesetzt hat.

Nachrichten dieses Typs werden im AES-Messagepuffer verschmolzen. Daraus folgt, daß immer die letzte Nachricht dieser Art empfangen wird; es können sich also nicht mehrere dieser Nachrichten im Puffer befinden.
WM_REDRAW (20) ein Fensterbereich muß neu gezeichnet werden
msg[3] Handle des neuzuzeichnenden Fensters
msg[4] x-Koordinate des Bereichs
msg[5] y-Koordinate des Bereichs
msg[6] Breite des Bereichs
msg[7] Höhe des Bereichs
WM_SHADED (22360) Fenster wurde eingeklappt.
msg[3] Handle des Fensters
WM_SIZED (27) die Fenstergröße wurde verändert
msg[3] Handle des Fensters
msg[4] neue x-Koordinate (unverändert)
msg[5] neue y-Koordinate (unverändert)
msg[6] neue Fensterbreite
msg[7] neue Fensterhöhe
WM_TOOLBAR (37) behandelt Mausklicks in ein Toolbar-Objekt; es gilt:
msg[3] Kennung des Fensters
msg[4] angeklicktes Objekt
msg[5] Anzahl der Mausklicks
msg[6] Tastatur-Status von Shift, Alternate und Control


Hinweis: Bei allen Objekten der Toolbox sollte das Flag TOUCHEXIT gesetzt werden, gilt nicht für XaAES.

Hier gibt es noch den zusätzlichen Wert:
msg[7] Aktuelles Objekt in dem sich der Textcursor befindet.
WM_TOPPED (21) ein Fenster soll zum oben liegenden Fenster werden.
msg[3] Handle des nach oben zu holenden Fensters
WM_UNICONIFY (35) ein oder mehrere Fenster der Applikation sollen unikonifiziert werden. Falls mehrere Fenster betroffen sind (WM_ALLICONIFY) ist die Applikation auf sich allein gestellt, da das AES keine Informationen über die betroffenen Fenster sowie deren Positionen/Ausmaße bereitstellt.
msg[3] Kennung des betreffenden Fensters
msg[4] X-Koordinate
msg[5] Y-Koordinate
msg[6] Breite
msg[7] Höhe des unikonifizierten Fensters
WM_UNSHADED (22361) Fenster wurde ausgeklappt.
msg[3] Handle des Fensters
WM_UNTOPPED (30) ein Fenster wird gerade inaktiv.
msg[3] Handle des betreffenden Fensters


Hinweis: zum Zeitpunkt der Ankunft der Nachricht kann sich der Fensterstapel bereits wieder verändert haben. Die Nachricht wird nur verschickt, wenn die Applikation nicht mit einem Aufruf das Fenster selbst in den Hintergrund gelegt hat.
WM_VSLID (26) der vertikale Rollbalken wurde verschoben
msg[3] Handle des Fensters
msg[4] die neue Sliderposition:
0000 = ganz oben
1000 = ganz unten

Die Unterstützung der neuen Nachrichtentypen kann per appl_getinfo (Opcode 12) erfragt werden. Für benutzerdefinierte Mitteilungen hat Digital Research übrigens Message-Nummern jenseits von 1024 vorgeschlagen.

Zur Größe des Nachrichtenpuffers:

Eine einzelne Applikation sollte unter MagiC 2.0 nicht mehr als 16 Fenster nutzen, da sonst der Nachrichtenpuffer des Systems überlaufen kann und evtl. Redraws nicht mehr ausgeführt werden können.

Querverweis: evnt_multi   evnt_mesag   AV-Protokoll   OLGA-Protokoll   Drag&Drop

8.7.9 Nachrichten-Liste

Hex Dez Name
$000a 10 MN_SELECTED
$0014 20 WM_REDRAW
$0015 21 WM_TOPPED
$0016 22 WM_CLOSED
$0017 23 WM_FULLED
$0018 24 WM_ARROWED
$0019 25 WM_HSLID
$001a 26 WM_VSLID
$001b 27 WM_SIZED
$001c 28 WM_MOVED
$001d 29 WM_NEWTOP
$001e 30 WM_UNTOPPED
$001f 31 WM_ONTOP
$001f 31 WM_BACKDROPPED KAOS 1.4.2
$0020 32 WM_OFFTOP MultiGEM
$0021 33 WM_BOTTOMED
$0022 34 WM_ICONIFY
$0023 35 WM_UNICONIFY
$0024 36 WM_ALLICONIFY
$0025 37 WM_TOOLBAR
$0026 38 WM_REPOSED XaAES
$0028 40 AC_OPEN
$0029 41 AC_CLOSE
$002b 43 WM_ISTOP MultiGEM
$0032 50 AP_TERM
$0032 50 CT_UPDATE DR
$0033 51 AP_TFAIL
$0033 51 CT_MOVE DR
$0034 52 CT_NEWTOP DR
$0035 53 CT_KEY XControl
$0039 57 AP_RESCHG
$003c 60 SHUT_COMPLETED
$003d 61 RESCH_COMPLETED
$003f 63 AP_DRAGDROP
$0046 70 TDI_Question TDI-Modula
$0047 71 TDI_Answer TDI-Modula
$0048 72 SH_WDRAW
$0050 80 SC_CHANGED
$0052 82 PRN_CHANGED NVDI
$0053 83 FNT_CHANGED NVDI
$0054 84 COLORS_CHANGED NVDI
$0058 88 THR_EXIT
$0059 89 PA_EXIT MagiC 3
$005a 90 CH_EXIT
$0064 100 WM_M_BDROPPED MagiC
$0064 100 Druckauftrag CALCLOCK, from DR
$0065 101 SM_M_SPECIAL MagiC
$0065 101 Druckauftrag emfpangen CALCLOCK, from DR
$0066..$006d 102..109 SM_M_RES MagiC (intern)
$006e..$00c7 110..199 reserviert Screen-Manager
$00c8 200 PRT_MSG Output
$00c9 201 STRT_MSG Output
$00ca 202 QUIT_MSG Output
$00cb..$0158 203..344 reserviert Screen-Manager
$0159 345 WM_WHEEL XaAES
$015a..$03e7 346..999 reserviert Screen-Manager
$03e8 1000 SCRAP_OK Scrap
$03e9 1001 SCRAP_NOTOK Scrap
$03ea 1002 SCRAP_UPDT Scrap
$03eb 1003 SCRAP_OPEN Scrap
$03ec..$03ff 1004..1023 reserviert Screen-Manager
$03fd 1021 SHOW MultiGEM2
$03ff 1023 HIDE MultiGEM2
$0400 1024 ACC_ID XAcc Protocol
$0401 1025 ACC_OPEN XAcc Protocol
$0402 1026 ACC_CLOSE XAcc Protocol
$0403 1027 ACC_ACC XAcc Protocol
$0404 1028 ACC_EXIT XAcc Protocol
$0438 1080 MYOSD_DISPLAY MyOSD
$0439 1081 MYOSD_OK MyOSD
$043A 1082 MYOSD_NOK MyOSD
$0480 1152 ACC_REQUEST XAcc Protocol
$0481 1153 ACC_REPLY XAcc Protocol
$0500 1280 ACC_ACK XAcc Protocol
$0501 1281 ACC_TEXT XAcc Protocol
$0502 1282 ACC_KEY XAcc Protocol
$0503 1283 ACC_META XAcc Protocol
$0504 1284 ACC_IMG XAcc Protocol
$0510 1296 ACC_GETDSI XAcc Protocol
$0511 1297 ACC_DSINFO XAcc Protocol
$0512 1298 ACC_FILEINFO XAcc Protocol
$0513 1299 ACC_GETFIELDS XAcc Protocol
$0514 1300 ACC_FIELDINFO XAcc Protocol
$0520 1312 ACC_FORCESDF XAcc Protocol
$0521 1313 ACC_GETSDF XAcc Protocol
$0401 1025 AC_HELP PureC-Help Protocol
$0402 1026 AC_REPLY PureC-Help Protocol
$0403 1027 AC_VERSION PureC-Help Protocol
$0404 1028 AC_COPY PureC-Help Protocol
$0708..$0710 1800..1808 interne Kommunikation Hänisch Modula-2
$07d0 2000 MSG_IDENTIFY STalker
$07d1 2001 MSG_SLEEP STalker
$07d2 2002 MSG_WAKE STalker
$07d3 2003 MSG_DISPLAY STalker
$07d4 2004 MSG_INFO STalker
$07d5 2005 MSG_CONFIG STalker
$07d6 2006 MSG_BUFFER STalker
$07d7 2007 MSG_RESOURCE STalker
$07d8 2008 MSG_SENDSTRING STalker
$07d9 2009 MSG_KEYSTROKE STalker
$07da 2010 MSG_EXECUTE_SCRIPT STalker
$07db 2011 MSG_ENABLE STalker
$07db 2011 INST_CURSOR HFB-Hausfinanzbuchhaltung
$07dc 2012 CHANGE_MENU HFB-Hausfinanzbuchhaltung
$07dd 2013 PUT_VORGABE_DO2 HFB-Hausfinanzbuchhaltung
$07de 2014 PUT_VORGABE_EIGENT HFB-Hausfinanzbuchhaltung
$07df 2015 PUT_DATA_IN_BOX HFB-Hausfinanzbuchhaltung
$07e0 2016 MY_WM_ONTOP HFB-Hausfinanzbuchhaltung
$0930 2352 WM_MOUSEWHEEL
$0935 2357 WIND_DATA
$0936 2358 DO_WPOPUP DirUp
$0991 2449 Holger Weets
$0994 2452 ICON_MSG ASH-EMailer
$0995 2453 RSDAEMON_MSG PPP-Connect
$0996 2454 DD_STRING
$0997 2455 WISEL_MSG
$0998 2456 MSG_NOEVENT
$0999 2457 WINCOM_MSG
$0a2b 2603 TOPW_OPENED Manager
$0a91 2705 FILE_UPDATED Manager
$0c94 3220 ASK_ALTA_LISTA Alta Lista
$0c95..$0c9d 3221..3229 reserviert Alta Lista
$0c9e 3230 AL_Reply Alta Lista
$0cf1 3313 TWSTART TosWin2, tw-call
$0cf2 3314 TWOK TosWin2, tw-call
$0cf3 3315 TWWRITE TosWin2, tw-call
$0cf4 3316 TWREAD TosWin2, tw-call
$0cf5 3317 TWERR TosWin2, tw-call
$0cf6 3318 TWTOP TosWin2, tw-call
$0cf7 3319 TWSHELL TosWin2, tw-call
$0fa0 4000 PENGUIN_Version HomePage Penguin
$0fa1 4001 PENGUIN_Reply HomePage Penguin
$0fa2..$0faf 4002..4015 reserviert HomePage Penguin
$1000 4096 WM_SAVE Menü Protocol
$1001 4097 WM_SAVEAS Menü Protocol
$1002 4098 WM_PRINT Menü Protocol
$1003 4099 WM_UNDO Menü Protocol
$1004 4100 WM_CUT Menü Protocol
$1005 4101 WM_COPY Menü Protocol
$1006 4102 WM_PASTE Menü Protocol
$1007 4103 WM_SELECTALL Menü Protocol
$1008 4104 WM_FIND Menü Protocol
$1009 4105 WM_REPLACE Menü Protocol
$100a 4106 WM_FINDNEXT Menü Protocol
$100b 4107 WM_HELP Menü Protocol
$100c 4108 WM_DELETE Menü Protocol
$1065 4197 IDC_FROM_ACC IDC
$10a5 4261 IDC_WAKE_UP IDC
$10e5 4325 IDC_FROM_APP IDC
$1150 4432 JINNEE_MSG
$1235 4661 GO_PRIVATE ObjectGEM
$1236 4662 OLGA_INIT OLGA-Protocol
$1238 4664 OLGA_UPDATE OLGA-Protocol
$1239 4665 OLGA_ACK OLGA-Protocol
$123a 4666 OLGA_RENAME OLGA-Protocol
$123b 4667 OLGA_OPENDOC OLGA-Protocol
$123c 4668 OLGA_CLOSEDOC OLGA-Protocol
$123d 4669 OLGA_LINK OLGA-Protocol
$123e 4670 OLGA_UNLINK OLGA-Protocol
$123f 4671 OLGA_UPDATED OLGA-Protocol
$1240 4672 OLGA_RENAMELINK OLGA-Protocol
$1241 4673 OLGA_LINKRENAMED OLGA-Protocol
$1242 4674 OLGA_GETOBJECTS OLGA-Protocol
$1243 4675 OLGA_OBJECTS OLGA-Protocol
$1244 4676 OLGA_BREAKLINK OLGA-Protocol
$1245 4677 OLGA_LINKBROKEN OLGA-Protocol
$1246 4678 OLGA_START OLGA-Protocol
$1247 4679 OLGA_GETINFO OLGA-Protocol
$1248 4680 OLGA_INFO OLGA-Protocol
$1249 4681 OLGA_IDLE OLGA-Protocol
$124a 4682 OLGA_ACTIVATE OLGA-Protocol
$124b 4683 OLGA_EMBED OLGA-Protocol
$124c 4684 OLGA_EMBEDDED OLGA-Protocol
$124d 4685 OLGA_UNEMBED OLGA-Protocol
$124e 4686 OLGA_GETSETTINGS OLGA-Protocol
$124f 4687 OLGA_SETTINGS OLGA-Protocol
$1250 4688 OLGA_REQUESTNOTIFICATION OLGA-Protocol
$1251 4689 OLGA_RELEASENOTIFICATION OLGA-Protocol
$1252 4690 OLGA_NOTIFY OLGA-Protocol
$1253 4691 OLGA_NOTIFIED OLGA-Protocol
$1254 4692 OLGA_SERVERTERMINATED OLGA-Protocol
$1255 4693 OLGA_CLIENTTERMINATED OLGA-Protocol
$1256 4694 OLGA_INPLACEUPDATE OLGA-Protocol
$1257 4695 OLGA_ID4UPDATE OLGA-Protocol
$1258 4696 OLGA_GETEXTENSION OLGA-Protocol
$1259 4697 OLGA_EXTENSION OLGA-Protocol
$125a 4698 OLGA_GETSERVERPATH OLGA-Protocol
$125b 4699 OLGA_SERVERPATH OLGA-Protocol
$125c 4700 OLGA_IE_BUTTON OLGA-Protocol
$125d 4701 OLGA_IE_KEY OLGA-Protocol
$125e..$126f 4702..4719 reserviert OLGA-Protocol
$126f 4719 SSP_SRASR System Services Protocol
$1270 4720 SSP_SSIR System Services Protocol
$1271 4721 SSP_SPASI System Services Protocol
$1272 4722 SSP_SSUR System Services Protocol
$1273 4723 SSP_SPASA System Services Protocol
$1274 4724 SSP_SSA System Services Protocol
$1275..$128d 4725..4738 reserved System Services Protocol
$1350 4944 GS_REQUEST GEMScript Protocol
$1351 4945 GS_REPLY GEMScript Protocol
$1352 4946 GS_COMMAND GEMScript Protocol
$1353 4947 GS_ACK GEMScript Protocol
$1354 4948 GS_QUIT GEMScript Protocol
$1355 4949 GS_OPENMACRO GEMScript Protocol
$1356 4950 GS_MACRO GEMScript Protocol
$1357 4951 GS_WRITE GEMScript Protocol
$1358 4952 GS_CLOSEMACRO GEMScript Protocol
$1970 6512 RS_INITIATE Relationships
$1971 6513 RS_TERMINATE Relationships
$1972 6514 RS_ACK Relationships
$1973 6515 RS_HELLO Relationships
$1974 6516 RS_BYE Relationships
$1975 6517 RS_LINK Relationships
$1976 6518 RS_UNLINK Relationships
$1977 6519 RS_DATA Relationships
$1978 6520 RS_OPEN Relationships
$1a00 6656 1ADDR_INIT 1st Address
$1a01 6657 1ADDR_SEARCH 1st Address
$1a02 6658 1ADDR_INPUT 1st Address
$1a03 6659 1ADDR_SORT 1st Address
$1a04 6660 1ADDR_ALL 1st Address
$1a05 6661 1ADDR_REPLACE 1st Address
$1a06 6662 1ADDR_DELETE 1st Address
$1a80 6784 1ADDR_ANSW_INIT 1st Address
$1a81 6785 1ADDR_ANSW_SEARCH 1st Address
$1a82 6786 1ADDR_ANSW_INPUT 1st Address
$1a83 6787 1ADDR_ANSW_SORT 1st Address
$1a84 6788 1ADDR_ANSW_ALL 1st Address
$1a85 6789 1ADDR_ANSW_REPLACE 1st Address
$1a86 6790 1ADDR_ANSW_DELETE 1st Address
$1aff 6911 1ADDR_QUIT 1st Address
$1f40 8000 GM_SHOW_FILE GREPIT
$1f41 8001 GM_OPEN_DIALOG GREPIT
$1f42 8002 GM_OPEN_PRGINFO GREPIT
$2f10 12048 KOBOLD_JOB Kobold Protocol
$2f11 12049 KOBOLD_JOB_NO_WINDOW Kobold Protocol
$2f12 12050 KOBOLD_ANSWER Kobold Protocol
$2f13 12051 KOBOLD_CONFIG Kobold Protocol
$2f14 12052 KOBOLD_FIRST_SLCT Kobold Protocol
$2f15 12053 KOBOLD_NEXT_SLCT Kobold Protocol
$2f16 12054 KOBOLD_CLOSE Kobold Protocol
$2f17 12055 KOBOLD_FREE_DRIVES Kobold Protocol
$3d00..$3d7f 15616..15743 CAD-3D_Request_xxx CAD-3D
$3d80..$3dff 15744..15871 CAD-3D_Reply_xxx CAD-3D
$4150 16720   Aniplayer
$4200 16896 SE_INIT SE-Protocol
$4201 16897 SE_OK SE-Protocol
$4202 16898 SE_ACK SE-Protocol
$4203 16899 SE_OPEN SE-Protocol
$4204 16900 SE_ERROR SE-Protocol
$4205 16901 SE_ERRFILE SE-Protocol
$4206 16902 SE_PROJECT SE-Protocol
$4207 16903 SE_QUIT SE-Protocol
$4208 16904 SE_TERMINATE SE-Protocol
$4209 16905 SE_CLOSE SE-Protocol
$4240 16960 ES_INIT SE-Protocol
$4241 16961 ES_OK SE-Protocol
$4242 16962 ES_ACK SE-Protocol
$4243 16963 ES_COMPILE SE-Protocol
$4244 16964 ES_MAKE SE-Protocol
$4245 16965 ES_MAKEALL SE-Protocol
$4246 16966 ES_LINK SE-Protocol
$4247 16967 ES_EXEC SE-Protocol
$4248 16968 ES_MAKEEXEC SE-Protocol
$4249 16969 ES_PROJECT SE-Protocol
$424a 16970 ES_QUIT SE-Protocol
$424b 16971 ES_SHLCTRL SE-Protocol
$4400 17408 WM_DESTROY WinDom
$4401 17409 WM_MNSELECTED WinDom
$4402 17410 WM_FORM WinDom
$4403 17411 AP_LOADCONF WinDom
$4404 17412 AP_BUTTON WinDom
$4405 17413 AP_KEYBD WinDom
$4410 17424 AP_DEBUG WinDom
$4411 17425 WM_UPLINE WinDom
$4412 17426 WM_DNLINE WinDom
$4413 17427 WM_LFLINE WinDom
$4414 17428 WM_RTLINE WinDom
$4415 17429 WM_UPPAGE WinDom
$4416 17430 WM_DNPAGE WinDom
$4417 17431 WM_LFPAGE WinDom
$4418 17432 WM_RTPAGE WinDom
$4419 17433 WM_PREREDRAW WinDom
$4511 17681 eb_dump_capture_fullscreen EB DUMP
$4512 17682 eb_dump_capture_window EB DUMP
$4513 17683 eb_dump_capture_mouse EB DUMP
$4514 17684 eb_dump_disable_selector EB DUMP
$4515 17685 eb_dump_enable_selector EB DUMP
$4516 17686 eb_dump_disable_windframe EB DUMP
$4517 17687 eb_dump_enable_windframe EB DUMP
$4560 17760 FILE_SELECTED Freedom
$4564 17764 AF_DOALERT Freedom Protocol
$4565 17765 FA_ALERTISOPEN Freedom Protocol
$4566 17766 FA_ALERTDONE Freedom Protocol
$4567 17767 AF_DOFSELECT Freedom Protocol
$4568 17768 FA_FSELISOPEN Freedom Protocol
$4569 17769 FA_FSELCLOSED Freedom Protocol
$4570 17776 AF_CLOSEACK Freedom Protocol
$4571 17777 AF_SENDREDRAW Freedom Protocol
$4600 17920 BA_BUBBLE_REQUEST Trouble Bubble
$4601 17921 AB_OPEN_BUBBLE Trouble Bubble
$4602 17922 BA_BUBBLE_OPENED Trouble Bubble
$4603 17923 AB_CLOSE_BUBBLE Trouble Bubble
$4604 17924 BA_BUBBLE_CLOSED Trouble Bubble
$46ff 18175 THING_CMD Thing
$4700 18176 AV_PROTOKOLL AV Protocol
$4701 18177 VA_PROTOSTATUS AV Protocol
$4703 18179 AV_GETSTATUS AV Protocol
$4704 18180 AV_STATUS AV Protocol
$4705 18181 VA_SETSTATUS AV Protocol
$4710 18192 AV_SENDKEY AV Protocol
$4711 18193 VA_START AV Protocol
$4712 18194 AV_ASKFILEFONT AV Protocol
$4713 18195 VA_FILEFONT AV Protocol
$4714 18196 AV_ASKCONFONT AV Protocol
$4715 18197 VA_CONFONT AV Protocol
$4716 18198 AV_ASKOBJECT AV Protocol
$4717 18199 VA_OBJECT AV Protocol
$4718 18200 AV_OPENCONSOLE AV Protocol
$4719 18201 VA_CONSOLEOPEN AV Protocol
$4720 18208 AV_OPENWIND AV Protocol
$4721 18209 VA_WINDOPEN AV Protocol
$4722 18210 AV_STARTPROG AV Protocol
$4723 18211 VA_PROGSTART AV Protocol
$4724 18212 AV_ACCWINDOPEN AV Protocol
$4725 18213 VA_DRAGACCWIND AV Protocol
$4726 18214 AV_ACCWINDCLOSED AV Protocol
$4728 18216 AV_COPY_DRAGGED AV Protocol
$4729 18217 VA_COPY_COMPLETE AV Protocol
$4730 18224 AV_PATH_UPDATE AV Protocol
$4732 18226 AV_WHAT_IZIT AV Protocol
$4733 18227 VA_THAT_IZIT AV Protocol
$4734 18228 AV_DRAG_ON_WINDOW AV Protocol
$4735 18229 VA_DRAG_COMPLETE AV Protocol
$4736 18230 AV_EXIT AV Protocol
$4738 18232 AV_STARTED AV Protocol
$4739 18233 VA_FONTCHANGED AV Protocol
$4740 18240 AV_XWIND AV Protocol
$4741 18241 VA_XOPEN AV Protocol
$4742 18242 GB GFA-Basic Editor
$4751 18257 AV_VIEW AV Protocol
$4752 18258 VA_VIEWED AV Protocol
$4753 18259 AV_FILEINFO AV Protocol
$4754 18260 VA_FILECHANGED AV Protocol
$4755 18261 AV_COPYFILE AV Protocol
$4756 18262 VA_FILECOPIED AV Protocol
$4757 18263 AV_DELFILE AV Protocol
$4758 18264 VA_FILEDELETED AV Protocol
$4759 18265 AV_SETWINDPOS AV Protocol
$475a 18266 GZ_PRIVATE GSZRZ Z-Modem
$4760 18272 VA_PATH_UPDATE AV Protocol
$4790..$4799 18320..18329 Mafia 2
$4800 18432 MP_ACK Paula Protocol
$4801 18433 MP_NAK Paula Protocol
$4802 18434 MP_START Paula Protocol
$4803 18435 MP_STOP Paula Protocol
$4804 18436 MP_SHUTDOWN Paula Protocol
$4888 18568 SEND_TRACE Tracer
$4889 18569 ANSWER_TRACE Tracer
$494D 18765 IM_COM Imagine Grafikartentreiber IM_COL.ACC
$4950 18768 OLE_INIT OLE Protocol
$4950 18768 IP_DIAL_REQUEST Qdialer
$4951 18769 OLE_EXIT OLE Protocol
$4951 18769 IP_DIAL_HANGUP Qdialer
$4952 18770 OLE_NEW OLE Protocol
$4952 18770 IP_DIAL_DONE Qdialer
$4953 18771 IP_DIAL_ERROR Qdialer
$4954 18772 IP_HANGUP_DONE Qdialer
$4955 18773 IP_STATUS_GET Qdialer
$4b48 19272 DA_KNOWHOW
$4c01 19457 AT_PERGAMON PEGASUS, SCHECKS, EVER, TARKUS
$4c4a 19530 LDG_QUIT LDG
$4c4d 19533 LDG_LOST_LIB LDG
$4d00 19712 MOD_OK Tetrax
$4d01 19713 MOD_NAK Tetrax
$4d02 19714 MOD_PLAY Tetrax
$4d03 19715 MOD_STOP Tetrax
$4d04 19716 MOD_LOAD Tetrax
$4d05 19717 MOD_CLEAR Tetrax
$4d50 19762   M_PLAYER
$4e20 20000 VTX_GET_BIN_PAGE Videotext Protocol
$4e21 20001 VTX_GET_ASCII_PAGE Videotext Protocol
$4e52 20050 VTX_FOUND Videotext Protocol
$4e53 20051 VTX_NOTFOUND Videotext Protocol
$4e54 20052 VTX_PROCESSKILLED Videotext Protocol
$4e55 20053 VTX_TERM Videotext Protocol
$4f4d 20301 M_ASKVAR Interface
$4f4e 20302 M_SENDVAR Interface
$5000 20480 PDF_AV_OPEN_FILE MyPDF
$5001 20481 PDF_AV_CLOSE_FILE MyPDF
$5002 20482 PDF_AV_PRINT_FILE MyPDF
$5003 20483 PDF_AV_FIND_WORD MyPDF
$5004 20484 PDF_AV_SHOW_INFO MyPDF
$5005 20485 PDF_AV_GET_INFO MyPDF
$5010 20496 MYTASK_START MyTask
$5011 20497 MYTASK_NEW_COLOR MyTask
$5012 20498 MYTASK_NEW_ICON MyTask
$5013 20499 MYTASK_DELETE_ICON MyTask
$5014 20500 MYTASK_ICON_CLICK MyTask
$5015 20501 MYTASK_BUTTON MyTask
$5016 20502 MYTASK_NEW_WINDOW MyTask
$5017 20503 MYTASK_NAME MyTask
$5018 20504 MYTASK_GET_SIZE MyTask
$5019 20505 MYTASK_BUBBLE_CHANGE MyTask
$501a 20506 MYTASK_ICON_ERROR MyTask
$501b 20507 MYTASK_CHANGED_OPTIONS MyTask
$501c 20508 MYTASK_SEND_OPTIONS MyTask
$5208 21000 OEP_OK Object Exchange Protocol (OEP)
$5209 21001 OEP_CONFIG Object Exchange Protocol (OEP)
$520a 21002 OEP_INFO Object Exchange Protocol (OEP)
$520b 21003 OEP_LINK Object Exchange Protocol (OEP)
$520c 21004 OEP_RES Object Exchange Protocol (OEP)
$520d 21005 OEP_UPDATE Object Exchange Protocol (OEP)
$520e 21006 OEP_DATA Object Exchange Protocol (OEP)
$520f 21007 OEP_CHANGED Object Exchange Protocol (OEP)
$5210 21008 OEP_SERVJOB Object Exchange Protocol (OEP)
$5211 21009 OEP_TAKEOVER Object Exchange Protocol (OEP)
$5212 21010 OEP_RES0 Object Exchange Protocol (OEP)
$5213 21011 OEP_RES1 Object Exchange Protocol (OEP)
$5214 21012 OEP_RES2 Object Exchange Protocol (OEP)
$5215 21013 OEP_RES3 Object Exchange Protocol (OEP)
$5216 21014 OEP_RES4 Object Exchange Protocol (OEP)
$5217 21015 OEP_RES5 Object Exchange Protocol (OEP)
$5218 21016 OEP_RES6 Object Exchange Protocol (OEP)
$5219 21017 OEP_RES7 Object Exchange Protocol (OEP)
$521a 21018 OEP_RES8 Object Exchange Protocol (OEP)
$521b 21019 OEP_RES9 Object Exchange Protocol (OEP)
$5300 21248 SRTY_SETUP Security
$5301 21249 SRTY_GETDEVS Security
$5302 21250 SRTY_DEVSTAT Security
$5343 21315 SH_CHANGED IFormats-CPXe
$5346 21318   STarFax
$5354 21332   XaAESnap
$5600 22016 VIEW_FILE View Protocol
$5601 22017 VIEW_FAILED View Protocol
$5602 22018 VIEW_OPEN View Protocol
$5603 22019 VIEW_CLOSED View Protocol
$5604 22020 VIEW_DATA View Protocol
$5610 22032 VIEW_GETMFDB View Protocol
$5611 22033 VIEW_SETMFDB View Protocol
$5612 22034 VIEW_MFDB View Protocol
$5613..$56ff 22035..22271 reserved View Protocol
$5646 22086   ViewFax
$5758 22360 WM_SHADED WINX
$5759 22361 WM_UNSHADED WINX
$6368 25448 CHTW_MSG Chatwin
$6400 25600 che_exist CHEMCALC
$6401 25601 mes_ack CHEMCALC
$6403 25603 set_modus CHEMCALC
$6411 25617 app_exit CHEMCALC
$6414 25620 get_menu_point CHEMCALC
$6415 25621 send_menu_point CHEMCALC
$6420 25632 request_file_ext CHEMCALC
$6421 25633 send_file_ext CHEMCALC
$64ff 25855 error CHEMCALC
$6502 25858 request_float CHEMCALC
$6503 25859 send_float CHEMCALC
$6602 26114 request_text CHEMCALC
$6603 26115 send_text CHEMCALC
$6666 26214 LOAD_FILE Porthos
$6667 26215 READ_Header Porthos
$6668 26216 READ_CATALOG Porthos
$6669 26217 CHG_PAGE Porthos
$666a 26218 LOOK_PAGE Porthos
$666b 26219 SAVE_REG Porthos
$666c 26220 SEND_IMG Porthos
$666d 26221 WRK_NAVIG Porthos
$6702 26370 decl_text CHEMCALC
$6704 26372 send_decltext CHEMCALC
$6705 26373 send_declfloat CHEMCALC
$7407 29703 GEMJING_RETURN GEMJing
$78f1 30961 WinChangeFont TrueMagic
$78f2..$7917 30962..30999 TrueMagic
$7996 31126 AES_Load
$7a00 31232 OBJC_EDITED EnhancedGEM
$7a01 31233 CURSOR_INIT EnhancedGEM
$7a02 31234 OBJC_CHANGED EnhancedGEM
$7a03 31235 OBJC_SIZED EnhancedGEM
$7a04 31236 OBJC_DRAGGED EnhancedGEM
$7a05 31237 MENU_INIT EnhancedGEM
$7a06 31238 MOUSE_INIT EnhancedGEM
$7a08 31239 POPUP_CHANGED EnhancedGEM
$7a08 31240 SLIDER_CHANGED EnhancedGEM
$7a10 31248 XACC_AV_INIT EnhancedGEM
$7a11 31249 XACC_AV_EXIT EnhancedGEM
$7a12 31250 XACC_AV_CLOSE EnhancedGEM
$7a13..$7a17 31251..31255 EnhancedGEM
$7a18 31256 FONT_CHANGED Font Protocol
$7a19 31257 FONT_SELECT Font Protocol
$7a1a 31258 FONT_ACK Font Protocol
$7a1b 31259 XFONT_CHANGED Font Protocol
$7a1c..$7a1f 31260..31263 EnhancedGEM
$7a20 31264 WIN_CHANGED EnhancedGEM
$7a21 31265 WIN_SCROLLED EnhancedGEM
$7a22 31266 WIN_TOPPED EnhancedGEM
$7a23 31267 WIN_CLOSED EnhancedGEM
$7a24 31268 WIN_VSLSIZE EnhancedGEM
$7a25 31269 WIN_HSLSIZE EnhancedGEM
$7a26 31270 WIN_NAME EnhancedGEM
$7a27 31271 WIN_INFO EnhancedGEM
$7a28 31272 WIN_HSLIDE EnhancedGEM
$7a29 31273 WIN_VSLIDE EnhancedGEM
$7a2a 31274 WIN_SIZED EnhancedGEM
$7a2b 31275 WIN_NEWTOP EnhancedGEM
$7a2c..$7a4f 31276..31311 EnhancedGEM
$8000 32768 CatMsg CAT
$8001 32769 ExtCatMsg CAT
$8003 32771 CatProtoMsg CAT
$9277 37495   Suji, nur intern
$9993 39315 RC_ROTATE Route It! / Circu It!
$9995 39317 RC_MOVE Route It! / Circu It!
$9996 39318 RC_UNDO Route It! / Circu It!
$9997 39319 CR_REDRAW Route It! / Circu It!
$9998 39320 CR_PARA Route It! / Circu It!
$9999 39321 RC_SENDPARA Route It! / Circu It!
$9a00 39424 WR_REC WinRec
$9a01 39425 WR_STOP WinRec
$9a02 39426 WR_PLAY WinRec
$9a03 39427 WR_TIME WinRec
$a081 41089   QFax/Pro
$baba 47802 BUBBLEGEM_REQUEST BubbleGEM
$babb 47803 BUBBLEGEM_SHOW BubbleGEM
$babc 47804 BUBBLEGEM_ACK BubbleGEM
$babd 47805 BUBBLEGEM_ASKFONT BubbleGEM
$babe 47806 BUBBLEGEM_FONT BubbleGEM
$babf 47807 BUBBLEGEM_HIDE BubbleGEM
$c010 49168 COLOR_ID Color-Drag&Drop
$c011 49169 COLOR_RGB Color-Drag&Drop
$cab0 51888 CAB_CHANGED CAB Protocol
$cab1 51889 CAB_EXIT CAB Protocol
$cab2 51890 CAB_PATH CAB Protocol
$cab3 51891 CAB_VIEW CAB Protocol
$cab4 51892 CAB_TERM CAB Protocol
$cab5 51893 CAB_REQUESTSTATUS CAB Protocol
$cab6 51894 CAB_RELEASESTATUS CAB Protocol
$cab7 51895 CAB_STATUS CAB Protocol
$cab8 51896 CAB_HELLO CAB Protocol
$cab9 51897 CAB_MAIL CAB Protocol
$caba 51898 CAB_MAILSENT CAB Protocol
$cabb 51899 CAB_MAILSENT CAB Protocol
$cabc..$cabf 51900..51903 CAB Protocol
$cc00..$cc7f 52224..52351 CYBSMASH_Request_xxx Cybersmash
$cc80..$ccff 52352..52479 CYBSMASH_Reply_xxx Cybersmash
$cc60 52320 MSG_CT60_TEMP CT60-CPX
$dadd 56029 DHST_ADD Document History Protocol
$dade 56030 DHST_ACK Document History Protocol
$de00..$de7f 56832..56959 DEGAS_Request_xxx Degas
$de80..$deff 56960..57087 DEGAS_Reply_xxx Degas
$e000 57344 X_MN_SELECTED Geneva
$e100 57600 X_WM_SELECTED Geneva
$e200 57856 X_GET_HELP Geneva
$e400 58368 X_WM_HSPLIT Geneva
$e600 58880 X_WM_ARROWED2 Geneva
$e700 59136 X_WM_HSLID2 Geneva
$e800 59392 X_WM_VSLID2 Geneva
$e900 59648 X_WM_OBJECT Geneva
$ed00 60672 ED_HELLO STeno
$ed01 60673 ED_OPEN STeno
$ed02 60674 ED_BYE STeno
$ed10 60688 ED_LOADF STeno
$ed11 60676 ED_NEW STeno
$ed12 60677 ED_SAVEF STeno
$ed14 60692 ED_CUT STeno
$ed15 60693 ED_COPY STeno
$ed16 60694 ED_PASTE STeno
$ed17 60695 ED_DELETE STeno
$ed18 60696 ED_FIND STeno
$ed19 60697 ED_CHANGE STeno
$ed1a 60698 ED_PRINT STeno
$ed1d 60701 ED_LINE STeno
$ed1e 60702 ED_READ STeno
$ed1f 60703 ED_INQINF STeno
$ed30 60720 ED_DCLICK STeno
$ed31 60721 ED_SELECT STeno
$ed40 60736 ED_MLOAD STeno
$ed41 60737 ED_MNEW STeno
$ed42 60738 ED_MSAVE STeno
$ed50 60752 ED_CLOSE STeno
$ed51 60753 ED_UNDOK STeno
$ed80 60800 ED_REPLY (Answer to ED_HELLO) STeno
$ed9f 60831 Answer of ED_INQINF STeno
$f3d0 62416 F3D_INIT Focus 3D
$f3d1 62417 F3D_EXIT Focus 3D
$f3d2 62418 F3D_REQUEST Focus 3D
$f3d3 62419 F3D_RETURN Focus 3D
$f3d4..$f3df 62420..62431 reserviert Focus 3D
$f825 63525 Answer of MSG_ENABLE STalker
-2011
$f826 63526 Answer of MSG_EXECUTE_SCRIPT STalker
-2010
$f827 63527 Answer of MSG_KEYSTROKE STalker
-2009
$f828 63528 Answer of MSG_SENSTRING STalker
-2008
$f829 63529 Answer of MSG_RESOURCE STalker
-2007
$f82a 63530 Answer of MSG_BUFFER STalker
-2006
$f82b 63531 Answer of MSG_CONFIG STalker
-2005
$f82c 63532 Answer of MSG_INFO STalker
-2004
$f82d 63533 Answer of MSG_DISPLAY STalker
-2003
$f82e 63534 Answer of MSG_WAKE STalker
-2002
$f82f 63535 Answer of MSG_SLEEP STalker
-2001
$f830 63536 Answer of MSG_IDENTIFY STalker
-2000
$fff0 65520 XMESSAGE XMSG - Message Server
$fff1 65521 XMSG_ASK XMSG - Message Server
$fff2 65522 XMSG_OK XMSG - Message Server

8.7.9.1 Das CAB-Protokoll

Das CAB-Protokoll besteht aus einer Reihe von AES-Messages mit deren Hilfe beliebige GEM-Programme bestimmte Aufgaben an CAB übertragen können, bzw. bestimmte Aktionen mit CAB koordinieren können.

Der Inhalt der Environment-Variablen BROWSER= (sofern definiert) enthält den Zugriffspfad von CAB. Sollte sich CAB nicht im Speicher befinden kann ein Programm über diese Variable CAB selbst nachstarten.

Eine mögliche Anwendung: Falls man im Internet weitere aktuelle Informationen oder Updates zu eigenen Programmen anbietet, könnte man mit dem CAB-Protokoll ohne großen Aufwand den Zugriff auf diese Informationen aus diesen Programmen heraus ermöglichen. CAB erledigt dann den Download der Daten und die Darstellung.

Die Beschreibung der Messages

CAB_HELLO (0xCAB8) (Nachricht von CAB)
CAB verschickt nach seinem Start an alle laufenden Programme diese Nachricht

msg[0] = 0xCAB8
msg[1] = Id von CAB
msg[2] = 0
msg[3] = Version des CAB-Protokolls (0x0100 entspricht V1.00)
msg[4] = Bitvektor mit den von CAB (CAB.OVL) unterstützten Internet-
         Protokollen
             Bit 0: HTTP
             Bit 1: FTP
             Bit 2: GOPHER
             Bit 3: WAIS
             Bit 4: MAILTO
             Bit 5: NNTP
             Bit 6: TELNET
             Bit 7-15: 0 (reserviert)
msg[5] = Bitvektor mit den von CAB unterstützten Nachrichten des
         CAB-Protokolls.
             Bit 0: CAB_VIEW
             Bit 1: CAB_MAIL, CAB_MAILSENT
             Bit 2: CAB_REQUESTSTATUS, CAB_RELEASESTATUS, CAB_STATUS,
                    CAB_EXIT
             Bit 3-15: 0 (reserviert)
msg[6] = 0
msg[7] = 0

CAB_SUPPORT (0xCABB) (Nachricht an CAB)
Wird diese Nachricht an CAB geschickt, sendet CAB die Nachricht CAB_HELLO zurück. Bleibt CAB_HELLO aus, wird noch eine alte Version von CAB benutzt welche das CAB-Protokoll noch nicht unterstützt. Alle Programme, die an den Informationen interessiert sind, die CAB_HELLO liefert, sollten nach dem Start CAB_SUPPORT an CAB senden. Wird CAB erst später gestartet, wird CAB_HELLO automatisch an das Programm geschickt.

msg[0] = 0xCABB
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_VIEW (0xCAB3) (Nachricht an CAB)
Ähnlich wie VA_START aber statt eines Dateinamens wird eine URL übergeben. CAB zeigt diese Datei dann an.

msg[0] = 0xCAB3
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = \ Zeiger auf die URL
msg[4] = /
msg[5] = Wenn hier 1 eingetragen wurde, stellt CAB die URL in einem neuen
         Fenster dar, wenn 0 eingetragen wurde wird das oberste CAB-
         Fenster benutzt.
msg[6] = 0
msg[7] = 0

CAB_REQUESTSTATUS (0xCAB5) (Nachricht an CAB)
Kann an CAB geschickt werden, um zu erfahren ob CAB zur Zeit online oder offline ist. CAB schickt daraufhin bei jeder Änderung des On-/Offline- Statuses die Message CAB_STATUS.

msg[0] = 0xCAB5
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_RELEASESTATUS (0xCAB7) (Nachricht an CAB)
Sollte an CAB geschickt werden, wenn ein Programm nicht mehr an den on/offline- Informationen interessiert ist, die mit CAB_REQUESTSTATUS angefordert wurden (z.B. weil es sich beendet).

msg[0] = 0xCAB7
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_STATUS (0xCAB6) (Nachricht von CAB)
Wird von CAB an alle Programme verschickt, die sich mit CAB_REQUESTSTATUS angemeldet haben.

msg[0] = 0xCAB6
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 1 falls CAB online; 0 falls CAB offline.
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_EXIT (0xCAB1) (Nachricht von CAB)
Wird von CAB an alle Programme geschickt, die sich mit CAB_REQUESTSTATUS angemeldet haben, sobald sich CAB beendet. Vorher wird auch noch ein CAB_STATUS gesendet, in dem der offline-Zustand gemeldet wird.

msg[0] = 0xCAB1
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_MAIL (0xCAB9) (Nachricht an CAB)
Kann an CAB geschickt werden, um Mails zu verschicken.

msg[0] = 0xCAB9
msg[1] = Id des PRGs
msg[2] = 0

msg[3] = \ Zeiger auf die URL. Ein 'Betreff' (Subject) kann, durch ein
msg[4] = / Fragezeichen getrennt, direkt an die URL gehängt werden.

msg[5] = \ Zeiger auf eine Datei, die den Mailinhalt enthält oder
msg[6] = / null (dann öffnet CAB einen Editor, in dem die Mail eingegeben
           wird).

msg[7] = Bitvektor mit weiteren Optionen.
             Bit 0: 0 falls die Maildatei sofort verschickt werden soll,
                    oder 1 falls die Maildatei vom Benutzer noch in CAB
                    bearbeitet/geändert werden soll.
             Bit 1: bei 1 wird die Maildatei gelöscht, nachdem sie verschickt
                    wurde, bei 0 bleibt sie erhalten.
             Bit 2-15: 0 (reserviert)

CAB_MAILSENT (0xCABA) (Nachricht von CAB)
Wird von CAB an das Programm geschickt, welches CAB_MAIL gesendet hat und enthält Informationen, ob das Verschicken der Mail geklappt hat oder nicht.

msg[0] = 0xCABA
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 1 falls die Mail ohne Fehler verschickt wurde; 0 bei Fehler (in
         diesem Fall ist in msg[4] die Fehlerursache zu erfahren).
msg[4] = Enthält eine Fehlernummer, falls msg[3]=0
              0: Keine URL angegeben.
              1: Offline, Netzverbindung gestört, Server nicht erreichbar.
              2: Benutzer hat Aktion abgebrochen (Falls die Mail in CAB
                 bearbeitet werden sollte, hat der Benutzer die
                 Möglichkeit die Aktion abzubrechen)
              3: GEMDOS-Fehler beim Zugriff auf die Maildatei.
              4: Editor zum Bearbeiten konnte nicht aufgerufen werden.
msg[5] = 0
msg[6] = 0
msg[7] = 0

Spezielle Messages für 'Cache-Tools'

CAB_CHANGED (0xCAB0) (Nachricht an/von CAB)
Der Cache (bzw. CACHE.CAB) wurde verändert und soll neu eingelesen werden.

msg[0] = 0xCAB0
msg[1] = Id von CAB/des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_EXIT (0xCAB1) (Nachricht an/von CAB)
CAB oder das Cache-Tool beendet sich (als Info für das jeweils andere PRG)

msg[0] = 0xCAB1
msg[1] = Id von CAB/des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_PATH (0xCAB2) (Nachricht von CAB)
Die lokalen HTML-Verzeichnisse und/oder das Cache-Verzeichnis wurde geändert. Nähere Infos sind in der Cache-Tools-Dokumentation zu erfahren.

msg[0] = 0xCAB2
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

CAB_TERM (0xCAB4) (Nachricht von CAB)
Das Cache-Tool soll sich beenden.

msg[0] = 0xCAB4
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0

8.7.9.2 Messages from Geneva

X_MN_SELECTED (0xE000)


This message is either accompanied by the MU_MESAG bit of an evnt_multi return, or is returned by the evnt_mesag call. When this message occurs, the message buffer contains:

Portion Contents
msg[0] 0xE000
msg[3] The object index of the menu title selected
msg[4] The object index of the selected menu item
msg[5], [6] The object tree of the menu item selected
msg[7] The handle of the window containing the menu

This feature is used in conjunction with the wind_set option X_WF_MENU, described in detail, below.

X_WM_SELECTED (0xE100)


This message is received when the user clicks on a window gadget in a window whose flags were modified with the wind_tree function. It only occurs when the X_WTFL_CLICKS attribute is off. If the user clicks on one of the normal scroll gadgets or arrows, a standard WM_ARROWED message is sent to the application. However, when the user clicks on any other gadget, an X_WM_SELECTED message is sent:

Portion Contents
msg[0] 0xE100
msg[3] The handle of the window containing the gadget
msg[4] The object index of the window tree object the user clicked on

This feature is used by the Task Manager's "Keyboard..." dialog.

X_GET_HELP (0xE200)


This message is sent to the Help display program when the user requests help on a certain topic. The message is actually comprised of two parts. When the application sees the X_GET_HELP message, it must then use the appl_read function to get the entire remainder of the message, whether it intends to use the whole thing or not. The first part of the message is comprised of the following values:

Portion Contents
msg[0] 0xE200
msg[1] Application ID
msg[2] Length of the second part ofthe message
msg[3] Length of the topic portion of the message, including
  the NUL terminator
msg[4] Length of the filename portion of the message, including
  the NUL terminator
msg[5] Upper/lowercase sensitivity. If non-zero, the topic is
  case-sensitive.

The second part of the message contains the actual text of the topic and filename fields. This can be read with one or more calls to appl_read.

Example:

    void read_string( char *s, int max, int size )
    {
      char dummy;

      if( size<=max )               /* the whole string fits */
        appl_read( my_application_id, size, s );
      else
      {
        /* read what we can */
        appl_read( my_application_id, max-1, s);
        s[max-1] = '\0';            /* terminate the string   */
        /* now, get the remaining bytes of the string         */
        for( size=size-(max-1); size>0; size-- )
           appl_read( my_application_id, 1, &dummy );
      }
    }

    main()
    {
      int msg[8], caps_sens;
      char topic[20], filename[100];

      evnt_mesag( msg );
      switch( msg[0] )
      {
        case X_GET_HELP:
           caps_sens = msg[5];
          /* Read the topic portion */
           read_string( topic, sizeof(topic), msg[3] );
          /* Read the filename portion */
            read_string( filename, sizeof(filename). msg[4] );
          /* Do whatever with it... */
X_WM_HSPLIT (0xE400)


This message is sent to an application when the position of the horizontal split bar has changed:

Portion Contents
msg[0] 0xE400
msg[1] Application ID
msg[2] 0
msg[3] Handle of the window being affected
msg[4] The new offset (in pixels) of the split bar

The application is then free to either act upon this message and change the split bar position with wind_set( X_WF_HSPLIT, or to ignore the message completely.

See the x_wind_create function for more information.

X_WM_ARROWED2 (0xE600)


This message is sent to an application when the user has licked on one of the arrow or scroll bar gadgets which are not reported by the normal WM_ARROWED message. X_WM_ARROWED2 reports changes in gadgets which are below a vertical split bar and/or to the right of a horizontal split bar. The format of a X_WM_ARROWED2 message is identical to that of WM_ARROWED.

See the x_wind_create function for more information.

X_WM_HSLID2 (0xE700)


This message is sent to an application when the user has dragged the second horizontal scroll gadget, which appears to the right of a horizontal split bar. The format of this message is identical to that of WM_HSLID.

See the x_wind_create function for more information.

X_WM_VSLID2 (0xE800)


This message is sent to an application when the user has dragged the second vertical scroll gadget, which appears below a vertical split bar. The format of this message is identical to that of WM_VSLID.

See the x_wind_create function for more information.

X_WM_OBJECT (0xE900) (since Update 003)


This message type is returned to an application when it uses wind_set mode X_WF_OBJHAND to affect the manner in which window gadgets are handled.

If an application receives this message, it is because the object tree handler routine instructed Geneva not to process the mouse click on a window gadget as a normal event. Instead, a special message is returned to the application:

Portion Contents
msg[0] 0xE900
msg[1] Application ID
msg[2] 0
msg[3] Handle of the window containing the object
msg[4] Object tree index of the object which was clicked

Note that in order for Geneva to determine that the mouse has been clicked on an object in a window's tree structure, it must be of type EXIT or TOUCHEXIT. Geneva's default window gadgets already have these attributes set correctly.

See also: wind_set mode   X_WF_OBJHAND.

8.7.9.3 RSDAEMON_MSG

Der RSDAEMON ist eine parallel laufende Applikation, die die Aufgabe des Resolvers per AES-Message übernimmt. Sinn ist quasi ein nichtblockierendes gethostbyname(), allerdings liefert der RSDAEMON nur eine IP, kein ganzes hostent-struct.

Der RSDAEMON wird normalerweise automatisch von IConnect gestartet und beendet.

Nutzung:

Per appl_find("RSDAEMON") ist die App-ID zu ermitteln. Im Fehlerfall sollte man auf das blockierende gethostbyname() zurückgreifen und nur, wenn garnicht anders möglich, stattdessen mit Fehlermeldung abbrechen.

Nun kann dem RSDAEMON eine AES-Message geschickt werden:

#include 

pbuf[0]=RSDAEMON_MSG
pbuf[1]=
pbuf[2]=0
pbuf[3]=RSD_REQUEST_IP
pbuf[4]=
pbuf[5/6]=
           (Ggf. Speicherschutz beachten!)

Der RSDAEMON liefert eine Antwort folgender Form:

pbuf[0]=RSDAEMON_MSG
pbuf[1]=
pbuf[2]=0

pbuf[3]=RSD_IP_UNKNOWN = IP konnte nicht ermittelt werden. Das kann
                         verschiedene Ursachen haben (User hat keinen
                         DNS eingetragen, DNS kenn den Host nicht etc.)
pbuf[4]=

oder:

pbuf[3]=RSD_IP_FOUND
pbuf[4]=
pbuf[5/6]=

Und hier noch die RSDAEMON.H:

#ifndef __RSDAEMON__
#define __RSDAEMON__

#define RSDAEMON_MSGØ’ 0x995

#define RSD_REQUEST_IP 1
#define RSD_IP_FOUNDIP 1       2
#define RSD_IP_UNKNOWN 3

#endif

HomeAESEditobjekt-FunktionenFensterdialoge