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.9.11 wind_set TOS Name: »Set Window« - verändert einzelne Parameter eines Fensters. AES-Nummer: 105 Deklaration: int16_t wind_set ( int16_t wi_shandle, int16_t wi_sfield, int16_t wi_sw1, int16_t wi_sw2, int16_t wi_sw3, int16_t wi_sw4 ); Beschreibung: Die Funktion verändert, abhängig von den übergebenen Parametern, verschiedene Eigenschaften des Fensters mit der Kennung wi_shandle. Es gilt für wi_sfield. Zusammenfassung aller Unterfunktionen WF_BEVENT (24) erlaubt es, eine WM_TOPPED Message beim Anklicken eines Fensters zu verhindern (z.B. um Dauerfunktionen in nicht getoppten Fenstern zu ermöglichen). wi_sw1 ist ein Bitvektor bei dem bisher lediglich Bit-0 eine Bedeutung besitzt. Andere Werte als 1 sind also nicht erlaubt. Der Aufruf wäre dann: wind_set(wi_shandle, WF_BEVENT, 0x0001, 0, 0, 0). Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 11) ermittelt werden. WF_BOTTOM (25) ermöglicht es, das (geöffnete!) Fenster mit der Kennung wi_shandle in den Hintergrund zu legen, und zwar per wind_set(wi_shandle, WF_BOTTOM, 0, 0, 0, 0). Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 11) ermittelt werden. WF_BOTTOMALL (22368) Stellt alle Fenster der Applikation wi_sw1 nach hinten. wi_sw1 = Kennung der Applikation Übergibt man in wi_shandle ein Fensterkennung ungleich DESKWINDOW, dann wird wi_shandle zusätzlich ganz nach hinten gestellt (ansonsten wird die Reihenfolge der Fenster untereinander nicht geändert). wi_shandle muß offen sein und der Applikation wi_sw1 gehören. Es ist nicht garantiert, daß eine Applikation WF_BOTTOMALL auf die Fenster einer anderen Applikation anwenden kann (vorallem in einer Multitasking-Umgebung). In diesem Fall wird 0 zurückgegeben. Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 22360) ermittelt werden. WF_COLOR (18) verändert die Farbe eines Fensterelements. Dazu wird in wi_sw1 die Nummer des Elements angegeben: Element Beschreibung W_BOTTOMER (20) Backdrop-Button W_BOX (0) Wurzelobjekt des Fensters W_CLOSER (2) Schließbox W_DATA (6) Elternobjekt der restlichen Elemente W_DNARROW (11) Pfeil nach unten W_FULLER (4) Zoombox W_HBAR (14) Elternobjekt der vertikalen Sliderelemente W_HELEV (18) Horizontaler Slider W_HSLIDE (17) Hintergrund des horiz. Sliders W_INFO (5) Infozeile W_LFARROW (15) Pfeil nach links W_NAME (3) Move-Balken W_RTARROW (16) Pfeil nach rechts W_SIZER (8) Size-Box W_SMALLER (19) Iconifier-Button W_TITLE (1) Elternobjekt der Schließ- und Zoombox, sowie des Names W_UPARROW (10) Pfeil nach oben W_VBAR (9) Elternobjekt der vertikalen Sliderelemente W_VELEV (13) Vertikaler Slider W_VSLIDE (12) Hintergrund des vert. Sliders W_WORK (7) Arbeitsfläche Im Parameter wi_sw2 wird die Farbe für den Objekttyp des Fensterelements übergeben, falls das Fenster getoppt ist, in wi_sw3 falls es nicht aktiv ist. Ein Wert von -1 behält die aktuelle Farbeinstellung bei. Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 11) ermittelt werden. WF_CURRXYWH (5) setzt die Fenstergröße aus wi_sw1, wi_sw2, wi_sw3 und wi_sw4 fest. XaAES is compatible with all other AES's, except from the following points: 1. If x, y, w and h all have a value of -1. 2. x and y values of -1 are 'legal', i.e, one cannot use -1 to use any old x value. Ofcourse, x and y coordinates are checked to be inside the rootwindow (not X when noleft = false). 3. When h have a value of 0, the window is infact shaded. This is a thing N.AES does with MiNTSetter, altho I'm not sure this is correct. The application is sent a WM_SHADED. On the next wind_set(handle, WF_CURRXYWH,...) where the h coordinate is not equal to the window's shaded height, the window is unshaded. While the window is shaded via this method, shift- clicks on the window title to shade a window is ignored. XaAES since 2004-09-22, there is an extend version. WF_DCOLOR (19) setzt die Standard-Farben für die Fensterelemente. Der Parameter wi_shandle wird ignoriert, und für die übrigen Parameter gilt: wi_sw1 = Fensterelement wi_sw2 = Farbe für aktive Fenster wi_sw3 = Farbe für inaktive Fenster Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 11) ermittelt werden. Beim Verändern der Komponente W_FULLER werden automatisch W_SMALLER und W_BOTTOMER mit verändert; dies macht es notwendig, zuerst den Fuller, und dann die übrigen Komponenten zu setzen. Ab MagiC 4 ist es möglich, für jedes einzelne Fensterelement 3D-Flags festzulegen. Dabei gilt: wi_sw1 = Fensterelement wi_sw2 = Farbe im aktiven Zustand wi_sw3 = Farbe im inaktiven Zustand wi_sw4 = 3D-Flags Der Parameter wi_shandle muß dabei den Wert 0 annehmen; die 3D-Flags werden als Bitvektor beschrieben; es gilt: Bit-0 = Effekt "3D im Vordergrund" Bit-1 = Effekt "3D im Hintergrund" Bit-2 = Effekt "selektierbar im Vordergrund" Bit-3 = dto. im Hintergrund Bit-8+n = Maskenbit für Bit n Es werden also nur Bits verändert, wenn das zugehörige Maskenbit gesetzt ist. Dieses Feature kann z.Zt. noch nicht über appl_getinfo ermittelt werden. WF_DDELAY (22362) Verzögerungswerte setzen wi_sw1 = Startverzögerung beim Klick auf Scrollpfeil wi_sw2 = Kontinuierliche Verzögerung beim Klick auf Scrollpfeil wi_sw3 = Kontinuierliche Verzögerung beim Klick auf Closer wi_sw4 = Kontinuierliche Verzögerung beim Klick auf Fuller Die Verzögerungswerte dienen zum Bremsen von Aktionen, falls diese zu schnell ausgeführt werden (z.B. wegen neuer Hardware). Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 22360) ermittelt werden. WF_FULLXYWH (7) If either wi_sw1, wi_sw2, wi_sw3 or wi_sw4 have a value of -1, that coordinate is not changed. If ALL coordinates have a value of -1, the window is actually moved to the current FULLXYWH coordinates, making the current window position the new PREVXYWH position. XaAES since 2004-09-22, there is an extend version. WF_HSLIDE (8) setzt den horizontalen Slider auf die neue Position wi_sw1 (0 ganz links, bis 1000 ganz rechts). WF_HSLSIZE (15) setzt die Größe des horizontalen Sliders relativ zur Gesamtbreite auf den Wert wi_sw1 (-1 kleinste Größe, 1 klein bis 1000 Gesamtbreite). WF_ICONIFY (26) das Fenster wird ikonifiziert. Die Parameter wi_sw1 bis wi_sw4 geben Position und Größe des Fensters im ikonifizierten Zustand an; diese Werte erhält man vom AES beim Eintreffen einer WM_ICONIFY Message. Tip: Um ein bereits erzeugtes, aber noch nicht geöffnetes Fenster zu ikonifizieren, übergibt man als Koordinaten (-1,-1,-1,-1). Das Fenster kann dann per wind_open(handle,-1,-1,-1,-1) auf den Bildschirm gebracht werden. Ab MagiC 4 und XaAES v0.943 funktioniert dies auch, wenn das Fenster bereits geöffnet ist. Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 11) erfragt werden. WF_IGNORE (13) Ist in alten AES-Version benutzt. Funktion unbekannt. WF_INFO (3) schreibt den String, auf den wi_sw1 und wi_sw2 zeigt, in die Infozeile. GEM benutzt dabei nur den Zeiger und legt keine Kopie an. Unter GEM ist die Länge auf 80 Zeichen beschränkt. Bei N.AES sind es maximal 128 bei XaAES maximal 200. WF_KIND (1) legt wi_sw1 als neue Fensterkomponenten fest, Format wie bei wind_create. WF_M_BACKDROP (100) Damit kann ein Fenster wi_sw1 auf einen Schalg nach untern gebracht werden, ohne die Reihenfolge der anderen Fenster zu verändern. In KAOS 1.4.2 hieß der Parameter noch WF_BACKDROP. WF_MENU (33) Es kann eine Menüzeile in ein Fenster eingehängt werden. Wurde das Fenster nicht mit der Komponente MENUBAR erzeugt, dann wird der Aufruf ignoriert. In wi_sw1 und wi_sw2 wird die Adresse des Baums übergeben. Beim anklicken erhält man eine erweiterte MN_SELECTED Nachricht. nur XaAES WF_NAME (2) schreibt den String, auf den wi_sw1 und wi_sw2 zeigt, in die Titelzeile. GEM benutzt dabei nur den Zeiger und legt keine Kopie an. Unter GEM ist die Länge auf 80 Zeichen beschränkt. Bei N.AES sind es maximal 128 bei XaAES maximal 200. WF_NEWDESK (14) legt den Objektbaum, auf den wi_sw1 und wi_sw2 zeigt, mit dem Startobjekt wi_sw3 als neues Desktop fest. Durch Übergabe eines Nullzeigers kann wieder der Standardhintergrund gesetzt werden. WF_OPTS (41) wi_handle is a window handle or -1. If handle is a legal window handle, the options will only apply to that window. If 'handle' is -1, the settings will apply to all windows the application creates AFTER this call. wi_sw1 is 0 to clear the selected bits or 1 to set the selected bits. wi_sw2 Currently available options are as follows; WO0_WHEEL (0x0001) Setting this bit will enable extended mouse wheel support, and go into WHL_AROWWHEEL mode causing XaAES to send extended WM_ARROWED messages to the application when the mouse wheel turns. Read section "XaAES and wheel mouse handling." for details. WO0_FULLREDRAW (0x0002) Setting this bit will make XaAES send WM_REDRAW messages to cover the whole work-area of the window when it is FULLED. Default behaviour is to only send WM_REDRAW messages for the areas that need it, blitting the already visible parts. This can also be configured via xaaes.cnf, see the app_options argument 'naesff'. WO0_NOBLITW (0x0004) Setting this bit will make XaAES send WM_REDRAW messages to cover the whole work-area of the window when its WIDTH changes. This is handy for apps like HighWire, Textprocessors ,etc, that need to reformat when window width changes. Default behaviour is to send WM_REDRAW messages for the areas that need it. WO0_NOBLITH (0x0008) Setting this bit will make XaAES send WM_REDRAW messages to cover the whole work-area of the window when its HEIGHT changes. Default behaviour is to send WM_REDRAW messages for the areas that need it. WO0_SENDREPOS (0x0010) Setting this bit will make XaAES send a WM_REPOSED(38) message when a windows X/WIDTH and/or Y/HEIGHT coordinate pair changes. Such changes happes when the user resizes the window using upper/left borders. Default behaviour is to first send a WM_MOVED followed by a WM_SIZED message under these conditions, because older apps dont evaluate the WIDTH/HEIGHT in WM_MOVED messages. So, dudes, set this bit and use WM_REPOSED! WO0_WCOWORK (0x0020) Setting this bit will enable Window Coordinate Orientation WORK mode. wi_sw3 and wi_sw4 are currently undefined and must be cleared. Features sollte per appl_getinfo (Opcode 11) erfragt werden. WF_PREVXYWH (6) If eitherwi_sw1, wi_sw2, wi_sw3 or wi_sw4 have a value of -1, that coordinate is not changed. If ALL coordinates have a value of -1, the window is actually moved to the current PREVXYWH coordinates, making the current window position the new PREVXYWH position. XaAES since 2004-09-22, there is an extend version. WF_SHADE (22365) Setzt den Shade-Zustand des Fensters wi_sw1 = Zu aktivierender Shade-Zustand 1: eingeklappt 0: ausgeklappt -1: Zustand umschalten Beim Einklappen wird eine WM_SHADED-Nachricht versandt. Beim Ausklappen WM_UNSHADED und ein WM_REDRAW über den kompletten Ausgabebereichs des Fensters. Setzt man den Zustand vor dem Öffnen des Fensters, dann wird er beim Öffnen beachtet. Das Schließen eines Fenster setzt es automatisch auf ausgeklappt. Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 22360) ermittelt werden. WF_STACK (22366) Stellt das Fenster wi_shandle im Fensterstapel unter das Fenster wi_sw1 ohne die Bildschirmposition selbst zu ändern. wi_sw1 = offenes Fenster/DESKWINDOW (0)/NOWINDOW (-1) Ist wi_shandle geschlossen, wird der Positionierungswunsch gespeichert und beim Öffnen des Fensters mit wind_open berücksichtigt. wi_sw1 wird erst bei der eigentlichen Positionierung ausgewertet. Ist (wi_sw1 == DESKWINDOW), wird das Fenster nach ganz hinten gestellt (entspricht WF_BOTTOM). Ist (wi_sw1 == NOWINDOW) oder wi_sw1 nicht offen, dann wird das Fenster wi_shandle ganz nach vorne gestellt (entspricht WF_TOP). Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 22360) ermittelt werden. WF_TOOLBAR (30) befestigt eine Toolbar an einem Fenster, ändert oder entfernt diese. Es gilt: wi_sw1 = High-Word wi_sw2 = Low-Word der Adresse der Toolbar. Um eine Toolbar zu entfernen, müssen die Parameter wi_sw1 und wi_sw2 auf NULL gesetzt werden. XaAES ab v0.942 kennt Toolbars. Hiefür gibt es zusätzliche Parameter: wi_sw3 = Startobjekt ab dem gezeichnet wird. wi_sw4 = Nummer des Editobjekt, in das der Cursor gesetzt wird. Beim betätigen eines Toolbarobjekt erhält man die Nachricht WM_TOOLBAR. WF_TOP (10) das Fenster mit dem Handle wi_shandle wird zum neuen oberen Fenster. Ab MagiC 4 und XaAES v0.943 kann durch wind_set (-1, WF_TOP, id, ...) das Menü und der Desktophintergrund auf die Applikation mit der Kennung id umgeschaltet werden; ein Wert von -1 für id steht dabei für die aktuelle Applikation. WF_TOPALL (22367) Holt alle Fenster der Applikation wi_sw1 nach vorne. wi_sw1 = Kennung der Applikation Übergibt man in wi_shandle ein Fensterkennung ungleich DESKWINDOW (0), dann wird wi_shandle zusätzlich ganz nach vorne gestellt (ansonsten wird die Reihenfolge der Fenster untereinander nicht geändert). wi_shandle muß offen sein und der Applikation wi_sw1 gehören. Es ist nicht garantiert, daß eine Applikation WF_TOPALL auf die Fenster einer anderen Applikation anwenden kann (vorallem in einer Multitasking-Umgebung). In diesem Fall wird 0 zurückgegeben. Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 22360) ermittelt werden. WF_UNICONIFY (27) das Fenster wird unikonifiziert. Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 11) erfragt werden. WF_UNICONIFYXYWH (28) das Fenster wird unikonifiziert. Die Parameter wi_sw1 bis wi_sw4 geben Position und Größe des Fensters im unikonifizierten Zustand an. Dieser Opcode ist dann besonders nützlich, wenn ein Fenster bereits im ikonifizierten Zustand geöffnet worden ist. WF_VSLIDE (9) setzt den vertikalen Slider auf die neue Position wi_sw1 (0 ganz oben bis 1000 ganz unten). WF_VSLSIZE (16) setzt die Höhe des vertikalen Sliders relativ zur Gesamthöhe auf den Wert wi_sw1 (-1 kleinste Höhe, 1 klein bis 1000 Gesamthöhe). WF_WCOLOR z.Zt. keine Informationen bekannt. WF_WHEEL (40) Setzt für ein Fenster (wi_shandle= Fensterkennung) oder alle Applikationen (wi_shandle= 0) die WA_WHEEL Nachricht. Ist wi_sw1 = 1 dann sendet XaAES eine spezielle WM_ARROWED (WA_WHEEL) Nachricht. Bei wi_sw1 = 1 kommt die normalen Nachricht. ab XaAES v0.960 WF_WIDGETS (200) Setzt die aktuellen Positionen der Sliderobjekte (W_UPARROW, W_DNARROW, etc.) des Fensters mit dem Handle wi_shandle. In den Parametern wi_sw1 und wi_sw2 werden die vertikal Elemente des typs rightwidgets, in den Parametern wi_sw3 und wi_sw4 die horizontal Elemente des typs bottomwidgets übergeben. wi_sw1 ist das oberste Element, wi_sw2 das unterste Element des Vertikalsliders. wi_sw3 ist das linkeste Element, wi_sw4 das rechteste Element des Horizontalsliders. WF_WINXCFG (22361) Setzt die globalen und lokalen Schalter der aufrufenden Applikation, falls dies möglich ist. wi_sw1 = Maske der bei diesem Aufruf zu verändernden globalen Schalter (Bit gesetzt bedeutet, Schalter übernehmen). wi_sw2 = Neue Schalterstellung der globalen Schalter (Bit gesetzt bedeutet, Schalter eingeschaltet). wi_sw3 = Maske der bei diesem Aufruf zu verändernden lokalen Schalter (Bit gesetzt bedeutet, Schalter übernehmen). wi_sw4 = Neue Schalterstellung der lokalen Schalter (Bit gesetzt bedeutet, Schalter eingeschaltet). Welche Schalter tatsächlich verändert wurden, kann man nur durch einen Aufruf von wind_get( WF_WINXCFG) ermitteln. ACHTUNG: Diese Funktion sollte nur von Konfigurationsprogrammen aufgerufen werden, die wissen was sie tun (z.B. WINX.CPX). Achtung: Das Vorhandensein dieses Features sollte per appl_getinfo (Opcode 22360) ermittelt werden. Hinweis: Die Parameter wi_sw1, wi_sw2, wi_sw3 und wi_sw4 sind dabei von der über den Parameter wi_sfield übergebenen Funktionsnummer abhängig. Bei der Angabe des Fensternamens sollte man aus ästhetischen Gründen vor und hinter der Zeichenkette immer ein Leerzeichen lassen, da sonst das Muster im Fensternamen direkt am ersten und am letzten Buchstaben hängt. Achtung: Die hier angegebenen Opcodes sind nicht mehr vollständig zum PC-GEM kompatibel, da die Entwicklung dort in eine andere Richtung ging. Ergebnis: Ein Fehler ist nur dann aufgetreten, wenn als Ergebnis 0 zurückgegeben wird. Verfügbar: In allen AES Versionen. Gruppe: Fensterverwaltung Querverweis: Binding wind_get wind_create OBJECT Unterfunktionsübersicht