![]() |
|||||||
![]() |
|
||||||
![]() |
|||||||
Uncommon Knowledge - Window_Common% in Paint - Part IIIAs promised in issue 7, in this issue we present the rest of the Window_Common% variables used in PAINT. Whilst not all of these are useful they are included here for the sake of completeness. The following article details the main differences between the WINDOW_COMMON area in normal usage, and its behaviour while in PAINT. Testing so far has not identified any areas where flag variables (such as WC_VALID%, WC_DISPLAY_ACTION%, WC_RESET%, WC_MPR_MODE% etc.) are used, so these are not included in the list. Other items not included are the fact that some null or zero variables are assigned differently - e.g. WC_FORCE_CHANGE% in PAINT is null whereas it will be set to zero in normal window processing when false.
WC_BROWSE_LIST% BROWSE_LIST contains a copy of the %FIELDS% dictionary
item from the table whose handle is present in
WC_SRC_DICT%. Other columns can be appended to this list
via a macro to allow quick painting of columns from other
tables into the window (e.g. to include common symbolics
from the DICT.VOC table) - PAINT will throw up a column
not found message when this is done, but this does not
affect the functionality.
WC_DELIM% Seems to always contain 4.
WC_EXCEPT_KEYS% Contains the scan codes for Shift-F1 through to Shift-F10
although some of these are only active when editing a
prompt.
WC_JOINED_LOCKS% An array containing up to six fields representing the
last option chosen from the options popup. As there may
be six different type of options popup (See
WC_Table_Exit_Mode%), each field in the array represents
the position in the corresponding options popup.
WC_KEY_FULL% WC_KEY_FULL% contains a parameter string for INRECT (see
REVMEDIA passim) which identifies the hot areas for the
visible prompts and labels. These areas are stored
relative to the top left hand corner of the window, and
are stored in reverse order, with the last prompt's entry
area being the first 4 byte sequence in the INRECT
string.
WC_LABEL% Similar to the normal window definitions but with some
differences to cope with box drawing. Field mark
delimited array with one field per label. Each field has
9 values, with contents as follows
<X,1> X position
<X,2> Y position
<X,3> Colour escape sequence
<X,4> Screen literal in the case of normal or smart
labels. In the case of a box, a value between
1 and 5 depending upon the box type as
selected from the popup "BORDERS".
<X,5> Depth of box
<X,6> Width of display or box
<X,7> Code if "Smart" label
<X,8> Command if "Smart" label
<X,9> Offset byte for this label into the compiled
print image contained in WC_XREF_WINDOW% (cf).
Thus if this contained 6, the compiled label
image would begin at byte position 6 in
WC_XREF_WINDOW%. According to internal RevTI
sources, this use of offsets into the compiled
print image is in no small way responsible for
the increased speed of the new paint
processor.
WC_MPR_MODE% Indicates that the last resize operation was carried out
by mouse. Values identified thus far are
1 Resizing by mousing right side
2 Resizing by mousing bottom side
3 Resizing by mousing at bottom right corner
4 Resizing by mousing left side
5 Does not seem to be used
6 Resizing by mousing at bottom left corner
Note that resizing using Ctrl-F7 does not set this flag.
WC_OREC% Contains a copy of the original template structure - this
is used to create the .BAK row in the windows table if
changes made during the paint session are committed.
WC_PREC% Seems to be used to indicate whether there has yet been
a key field added to the window. If true there has been.
WC_PROMPTS% Prompts is a copy of the prompt information stored in
WC_OREC% with any general video information swapped for
its full escape sequence. E.g. ^PE^ in WC_OREC% might
become ESC-C74 in WC_PROMPTS%. WC_PROMPTS% can be used in
conjunction with WC_REDISPLAY_LIST% to identify
highlighted areas (see previous issue.)
Note that in Paint, three new values are added to
Prompts, in values 56, 57 and 58. These contain the
following :-
56 This is an offset pointer into WC_XREF_WINDOW% for
the prompt literal, per WC_LABEL% qv.
57 This is an offset pointer into WC_XREF_WINDOW% for
the prompt entry per WC_LABEL% qv
58 The word "Selected" if the prompt is currently
selected.
WC_PROMPT_TYPE% The prompt type currently selected. Values identified
thus far are as follows
1 Prompt label
2 Prompt entry
3 Display label
4 Box label
WC_QUERY_MODE% Indicates the current binding mode. Possible values are
0 Labels
1 Bind Off
2 Bind On
WC_QUERY_TEMPLATE% After the options key has been pressed, this contains a
field mark delimited array with fields 2-7 of SYSTEXT
record PAINT*PARMS.
WC_RECALC% RECALC seems always to be set to the literal ALL while
in PAINT.
WC_REDISPLAY_LIST% This variable contains the list of prompts and
labels which are tagged as having being selected in
PAINT, in the form of a two dimensional dynamic array.
Its behaviour is fully documented in issue 7.
WC_REGISTER%() When in either SF5 or SF6, Register(1) contains the
dictionary file name and Register(2) contains the
dictionary file variable.
WC_SRC_DICT% WC_SRC_DICT% holds the handle for the associated data
table's dictionary, just as it does normally. This is in
contrast to the behaviour of WC_SRC_FILE% below.
WC_SRC_FILE% In PAINT, WC_SRC_FILE% contains the handle for the
WINDOWS table which stores the template, NOT the data
portion of the associated table as is normal.
WC_STOP_LIST% Another INRECT parameter string, this time composed of
seven 4-byte sequences as follows:
(1) The visible area within the window borders.
(2) The position of the ESC button on the top border.
(3) The top border itself.
(4) The left hand border.
(5) The bottom right hand corner of the window.
(6) The right hand border.
(7) The bottom border.
The top border is the most dominant, and the bottom
border is the least i.e. the top left hand corner
belongs to the TOP border, not the left, while the
bottom left hand corner belongs to the LEFT border, not
the bottom. The bottom right hand corner is identified
separately to allow the special resize operation which
affects both axes simultaneously.
WC_TABLE_EXIT_MODE% Set to a different value depending upon what is
currently selected in Paint. Values thus far identified
are
1 No objects selected
2 One prompt or prompt entry area
3 One label
4 A number of prompts/prompt entry areas (including
just one associated prompt and prompt entry area).
5 A number of labels
6 A number of objects of different types
WC_WEXIT_KEYS% Set to NULL in PAINT. Most of their window functionality
seems to have been taken on by WC_EXCEPT_KEYS%, above.
WC_WST_CHAR% Contains the row number of the item on the Paste popup
last chosen.
WC_XREF_WINDOW% Contains the print string for the currently visible
window area, including position and colour sequences,
but NOT including border detail.
(Volume 4, Issue 9, Pages 7-10)
|
|||||||
![]() |
|||||||
| |||||||