home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_07
/
ACS.ZIP
/
ACS
/
EXTRA.DOC
< prev
next >
Wrap
Text File
|
1992-01-28
|
5KB
|
174 lines
Diese Datei enthält ergänzende Informationen zu ACS. Insbesondere
Änderungen neuerer Revisions sind hier aufgeführt.
Die DR-Object-Ausgabe wird möglicherweise in zukünftigen Version
entfallen, da der Sinn für nicht mehr gegeben ist. Mit der C-Ausgabe
kann erheblich flexibler gearbeitet werden. Sollten Sie doch darauf
bauen, so teilen Sie mir das doch bitte mit.
Revision 1.02
Tips & Tricks
=============
Wird ein Objektbaum dynamisch verändert, wie z.B. der Desktop, so
sollten alle Objekte sich korrekt im Objektbaum befinden. Nichtbenutzte
Objekte darf man nicht einfach ausklinken. Wird dieses Objekt
aus irgendeinem Grund neu gezeichnet (Deselektieren, ..) ist GEM schwer
beleidigt. Als Lösung bietet sich das HIDETREE-Flag an, oder das
Umketten als Kind eines anderen, nicht sichtbaren Teilbaumes.
Revision 1.01
Aob_alias
=========
Diese vorbereitete 'click'-Routine gibt die Anwahl an das Objekt,
dessen Nummer in 'userp1' steht, weiter. Diese Routine kann benutzt
werden um Checkboxes vom einem Text anwählbar zu machen. Der Text
trägt dann diese 'click'-Routine und ist als TOUCHEXIT gekennzeichnet.
Neue USERDEFs
=============
Es gibt nun das USERDEF A_pattern. Es erlaubt verschiedene Muster
für Rechtecke zu wählen. Der Parameter 'ub_parm' hat folgende Bedeutung
Siehe auch VDI: v_bar.
Bits 0-3 (16) Farbe
Bits 16-20 (32) Musterindex (vsf_style)
Bit 21 (2) Rahmen (perimeter)
Bits 22-23 (4) 0 = FIS_HATCH
1 = FIS_PATTERN
2,3 = ACS eigen
Desweiteren kam A_arrows hinzu. Dieses USERDEF stellt Pfeile und
Linien zur Verfügung. Es kann nicht invertiert werden. Macht keine
auch besonderen Sinn. Siehe auch VDI: v_pline.
Bits 0-3 (16) Farbe
Bits 16-18 (8) Linientyp (vsl_type)
Bit 19 (2) 0 = 1 Pixel breit
1 = 3 Pixel breit
Bits 20-21 (4) Endetypus Start (vsl_ends)
Bits 22-23 (4) Endetypus Ende (vsl_ends)
Bits 24-26 (8) Startposition
Bits 28-30 (8) Endeposition (')
Die Positionen 4-7 sind um halbe Zeichenposition(en) nach
innen versetzt.
-----------------------------------------
|1 0 3'|
| 5 4 7' |
| |
|2 6 6'2'|
| |
| 7 4' 5' |
|3 0' 1'|
-----------------------------------------
Tips & Tricks
=============
Wenn dem Basisobjekt das Flag TOUCHEXIT gegeben wird, ohne eine
click-Routine einzutragen, kann kein Zieh-Rechteck aufgezogen werden.
Das ist interessant wenn das Objekt sowie keine ziehbaren Objekte
enthält.
Werden Textfelder programmatisch verändert, empfiehlt sich der
Objekt-Typ G_BOXTEXT mit und ohne Rahmen. Im Gegensatz zu F_TEXT
wird auch der Hintergrund neu gezeichnet!
Mauszustände
============
Bei Aufruf von A_dialog und Ame_popup wird die Maus immer als Zeiger
dargestellt, egal welche Form aktiv war und ob die Maus 'busy' war.
Nach Rückkehr wird die ursprüngliche Mausform und 'busy'-Zustand
eingenommen. Ein 'hide'-Zustand wird allerdings immer beachtet!
Positionen
==========
Nun können Positionen direkt überprüft und modifiziert werden.
Bitte beachten Sie, da₧ Pixelwerte vorzeichenbehaftet sind. Durch
unsinnige (negative) Werte werden Objekte unselektierbar! Also
bitte nur sehr vorsichtig einsetzen.
ROOTWINDOW
==========
Es wurde ein weiteres Beispiel aufgenommen, welches die Installation
eines eigenen Rootfenster zeigt.
Neu an dieser Version ist die Möglichkeit, keinen Desktop (Fensterinneres)
zu bestimmen. In der vorigen Revision führte dies zum Absturz.
Damit können Applikationen entwickelt werden, die sich konventionell
verhalten; allerdings auch in Ihren Fähigheiten. Ich empfehle die
Verwendung des Generischen Desktops.
Awi_obchange (Awindow *window, int obnr, int new_state) [window-> obchange]
===========================================================================
Dieser Aufruf verhält sich nun etwas anderst. Bislang wurde, wenn
'new_state' gleich 'ob_state' war, alles unter dem Objekt obnr
neu gezeichnet, also ab Objekt 0. Dies ist zwar sehr sicher, kostet
aber relativ viel Zeit.
Nun zeichnet dieser Aufruf nur ab obnr neu. Das ist sehr viel schneller.
In den meisten Fällen ist nichts am Programm zu ändern.
Falls veränderte, in der Länge variable Texte damit aufzufrischen sind,
sollte der OBJECT-Type G_BOXTEXT verwendet werden, der Rahmen kann ja
abgeschaltet werden.
Problematisch wird es wenn z.B. die Rahmendicke verkleinert wurde. Der
ehemals grö₧ere Rahmen wird nicht weggenommen. Für diesen Fall gibt es
einen neuen Aufruf 'Awi_obredraw', der die alte Funktionalität bietet.
Awi_obredraw (Awindow *window, int obnr)
========================================
Dieser Aufruf zeichnet alles unter dem Objekt obnr neu. Dazu wird der
Aufruf (window-> redraw) verwendet. Der Aufruf ist langsamer, aber
sehr zuverlässig im Auffrischen, als Awi_obchange.
Es können auch verkleinerte Rahmen korrekt aufgefrischt werden.
Insbesondere für versteckte Objekte kommt dieser Aufruf zu Einsatz.
Wurde das Objekt obnr versteckt kann Awi_obchange nichts zeichnen.
Awi_obredraw frischt den Bereich auf, wo sich zuvor das Objekt befand.
A_dialog
========
Die Variable 'dia_abort' erlaubt den Dialog nach Aufruf durch eine
'click'-Routine zu beenden. Dazu ist die Variable auf TRUE zu setzen.