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-File15.13.3.1.3 xfsl_event TOS Wenn der Fontselektor initialisiert und auf den Bildschirm gebracht wurde, übernimmt xfsl_event die Hauptarbeit. int xfsl_event (int xhandle, EVENT *event ); Die beiden Parameter bedeuten: xhandle Das Handle des Fontselektors, wie es von xfsl_init gelie- fert wurde. event Zeiger auf eine EVENT-Struktur, wie sie von Pure C verwen- det wird. In dieser Struktur liefert der Fontselektor AES- Events zurück, die er nicht selbst bearbeiten konnte. Außerdem können Sie über die Eingabeparameter dem Fontselektor auch mitteilen, über welche Ereignisse sie überhaupt unterrichtet werden wollen. Der Zeiger kann aber auch einfach Null sein, wenn Sie keine (weiteren) Events auswerten wollen. Soll der Fontselektor als Fensterdialog betrieben werden und der Aufrufer (d.h. Ihr Programm) hat noch weitere Fenster offen, dann müssen Sie aber zumindest die Redraw-Meldungen auswerten! Beispiel: Wenn Sie in `ev_mflags' das Flag MU_MESAG setzen, wird der Fontselektor alle eintreffenden AES-Nachrichten, die er nicht selbst bearbeiten kann, an den Aufrufer zu- rückliefern. Hinweis: Es ist natürlich auch möglich, Timer-Events zu be- kommen. Diese sollten aber sparsam eingesetzt werden und nicht zu kurz sein, da der Fontselektor dazu jedesmal erst seine eigene Event-Schleife verlassen muß. 250 ms mögen als - unverbindliche - untere Grenze gelten. Die möglichen Rückgabewerte von xfsl_event: xFS_STOP Im Fontselektor wurde der Button "Abbruch" oder (so vor- handen) der Closer des Fensterdialogs angewählt. Wenn das Kontrollflag CC_CLOSER gesetzt ist und der Closer angeklickt wurde, enthält die PFONTINFO-Struktur, auf die der Zeiger in der xFSL_PAR-Struktur zeigt, aber trotzdem Angaben darüber, welcher Font zuletzt im Fontselektor angewählt worden war. Anders wäre diese In- formation sonst ja nicht zu erhalten. xFS_OK Es wurde ein Font ausgewählt und "OK" angewählt. Welcher Font ausgewählt wurde, beschreibt die PFONTINFO-Struktur, auf die der Zeiger in der xFSL_PAR-Struktur zeigt. Wenn bei xfsl_init ein gültiges VDI-Handle übergeben wurde, dann wird der ausgewählte Font auch gleich auf dieser VDI-Workstation eingestellt. xFS_HELP Der Hilfe-Button wurde angewählt (kann natürlich nur auf- treten, wenn Sie ihn haben einblenden lassen). Es liegt nun am Aufrufer, wie er darauf reagiert. Im Normalfall wird man wohl eine Hilfe geben, z.B. indem man eine Hilfsseite anzeigt oder anzeigen läßt. xFS_EVENT Ein AES-Event ist aufgetreten, den der Fontselektor nicht bearbeiten konnte (z.B. eine Redraw-Meldung für ein ande- res Fenster). Welcher Event es genau war, können Sie dem Feld `ev_mwich' der EVENT-Struktur entnehmen. Accessories sollten bei Eintreffen der Nachricht AC_CLOSE den Aufruf von xfsl_exit nicht vergessen! Gleiches gilt analog für die Nachricht AP_TERM. xFS_POPUP Am User-Popup (sofern vorhanden) wurde ein Veränderung vorgenommen. Bei dem Popup-Eintrag, der geändert wurde, ist im Element `fontflags' das Bit FF_CHANGED gesetzt. Der Popup-Eintrag, der jetzt angewählt wurde und bei Rückkehr in den Fontselektor (beim nächsten xfsl_event- Aufruf) der aktuelle des Popups sein wird, steht im Element `sel_entry'. Sie haben jetzt noch die Möglichkeit, Änderungen an den Popup-Einträgen vorzunehmen, beispielsweise die Fontflags zu ändern oder den geänderten Font in alle anderen Popup-Einträge zu übernehmen (auf diese Weise ist es auch möglich, das Popup für eine andere Information zu verwen- den, die mit den ausgewählten Fonts nichts zu tun hat). Die Texte und die Anzahl der Popup-Einträge dürfen aber nicht verändert werden! andere Werte: Andere positive Werte sollten ignoriert werden. Es ist möglich, daß die Schnittstelle um weitere Rückgabewerte (Ereignisse) erweitert wird. Negative Werte zeigen einen Fehler an, der Fontselektor sollte dann abgebrochen werden. Dazu muß aber unbedingt noch xfsl_exit aufgerufen werden!