•  Back 
  •  Ereignisverwaltung 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File8.7.8  Nachrichten                                                 TOS

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