Please enable JavaScript to view this site.

A-Shell Development History

919.1.1

(Windows/ATE) Buttons now support loading icon or bitmap images from within a DLL, in addition to the existing method of loading them from individual ICO or BMP files. The distinction is based on the syntax used to specify the icon, as shown in these two examples:

xcall AUI,"CONTROL",1,CTLID,"stop::ashico1.dll",MBST'ENABLE, MBF'STATIC+MBF'ICON,"","",CSTATUS, SROW,SCOL,SROW,SCOL

xcall AUI,"CONTROL",1,CTLID,"stop.ico",MBST'ENABLE, MBF'STATIC+MBF'ICON,"","",CSTATUS, SROW,SCOL,SROW,SCOL

In the first example, it loads the icon whose resource name is "stop" from the ashico1.dll. In the second example, it loads the icon from the file stop.ico.

919.1.2

(Windows/ATE) A new flag, MBF'NODISTORT (4194304), has been added for use when displaying icons in buttons to preserve the aspect ratio of the icon. Otherwise, it is stretched to fill the button in both dimensions. (MBF'NODISTORT is the same as MBF'WRAP and MBF'PATHELLIPSIS, but given its own name just for clarity.)

Note that when icons are displayed in a static (MBF'STATIC) control, they are not resized. But in the case of buttons, the icon is resized to approximately fill the button. Since icons are naturally rectangular, the MBF'NODISTORT option is most noticeable when the buttons are not very square.

919.1.3

(Windows/ATE) AUI EVENTWAIT now returns EXITCODE 10 for ^C (like INFLD would if TYPE V specified.)

919.1.4

(Windows/ATE) Fix a bug in EVENTWAIT in which it was sometimes setting and not clearing the SHIFT status (thus returning EXITCODES for shifted function keys instead of the unshifted function keys).

919.1.5

MAP.LIT 2.2(106) now displays the version number of program modules if the /F{ULL} switch specified. (This is particularly helpful when trying to figure out if you've got the proper version of an auto-loaded SBX or RUN file in memory.)

919.1.6

(Windows/ATE) The INFLD combo box now supports the "fast" mode (TYPE F) by exiting on a single click of an item in the dropdown list. (Otherwise it takes a click followed by an exit key, or else a doubleclick, but doubleclick can be tricky since if you don't do it fast enough, the second click gets delivered to whatever control was beneath the dropdown list.)

919.1.7

(Windows/ATE) Fix a bug in multiple XTREE controls; certain column parameters from one control would replicate themselves from one control to the next.

919.0.1

(Windows/ATE) INFLD now uses the XP password routine (which echoes the characters as dots rather than asterisks). It also offers a way to eliminate the standard XP password warning about the CAPS LOCK being set. The trick is to specify TYPE ^ (fold upper case). This causes INFLD to temporarily toggle the CAPS LOCK key off during the password entry, then toggle it back on when you exit. (The fold upper case option will serve the same purpose as the CAPS LOCK in this case.)

919.0.2

(Windows/ATE) Various icon related enhancements:

When displaying an icon in a dialog, if SROW = 0, the icon is given an automatic top margin equal to half a row. This allows for a "natural" placement of the icon in the upper left or upper right corner of the dialog. Previously, your choices were row 1, which put the icon up right against the title bar of the dialog, or row 2, which wasted a lot of space above the icon in short dialogs.
A set of high-quality, standard icons is now included with A-Shell, packaged in an external module ashico1.dll. To display one as a dialog icon (rather than a push-button icon), use the following syntax:

xcall AUI,"CONTROL",1, CTLID, ICONAME, MBST'ENABLE, MBF'STATIC+MBF'ICON, "", "", CSTATUS, SROW, SCOL, SROW, SCOL

where ICONAME uses the following syntax: "<resourcename>::<modulename>".

NOTE: ashico1.dll must be displayed in the standard Windows path, which starts in the directory where ashw32.exe is loaded from, and then includes the Windows and System32 directories.

 

To help make sense of all these choices, see the new sample program, ICODLG.BP, which displays all of the above icons with their names.
In addition to the above list, a much smaller set of standard Windows icons is now accessible directly from within A-Shell (without the need for an external DLL). These use the following ICONAMES:

ICONAMES

Description

#HAND

Same as the MBICON'stop icon in MSGBOX. In XP, this appears as an X in a red circle.

#QUESTION

Same as the MBICON'question icon in MSGBOX.

#EXCLAMATION"

Same as the MBICON'exclamation in MSGBOX. In XP, this is a yellow triangle with an exclamation mark in it.

#INFO

Same as the MBICON'info icon in MSGBOX. In XP, this is an "i" in a white caption bubble.

#WINPTR

A generic printer icon.

 

Note the following distinctions between displaying an icon as a button (MBF'BUTTON+MBF'ICON) and displaying an icon as a static control (MBF'STATIC+MBF'ICON):

Icons on buttons are scaled to the size of the button, whereas icons in static controls display in their "natural" size (which in most cases is 32x32 pixels, although on an extremely low res or high res screen, or if you tinker with the Windows system parameters, it may as small as 16x16 or as big as 64x64). Although the icon size is not affected by the EROW and ECOL parameters, I recommend setting them either equal to SROW and SCOL (as shown in the example XCALL syntax above).
Buttons interpret the ICONAME parameter as a filespec, whereas static controls interpret it as a resource name, which must be one of the pre-defined names starting with "#" above (e.g. "#INFO") or be defined in a DLL and use the "resourcename::modulename" syntax as described above (e.g. "help:ashico1"). (At some point in the not-too-distant future, we will try to make the ashico1.dll icons available to be used in buttons, but for now, they can only be used as static icons.
Static controls, including icons, may have click actions defined, but they cannot get the focus while waiting in the EVENTWAIT routine.

919.0.3

(Windows/ATE) XTREE will now automatically assign the XTR'CTLNO (XTREE instance or control #) when creating a new XTREE control (i.e. XTR'OPCODE = 0), if you initially set it to -1. XTR'CTLNO will be returned with the number assigned, which must be used for any other calls to that same XTREE instance.