1. New Features
--------------- 1.1 The following user control classes are now implemented: STANDARD This is the default ("standard") scroll bar style that we all know and love from previous versions of FM. SCROLLBAR A bare Windows scroll bar, without the two automatic buddy controls associated with the STANDARD control class. TRACKBAR A standard Windows95 track bar control -- a welcome alternative to the time-worn scroll bar control. PUSHBUTTON A standard Windows push button control. CHECKBOX A standard Windows check box control. RADIOBUTTON A standard Windows radio button control. GROUPBOX A standard Windows group box control. Together with a set of RADIOBUTTON controls, this control can be used to construct a grouping of mutually-exclusive radio buttons. OWNERDRAW A standard Windows owner-drawn control, in which the FD is responsible for drawing the appearance. Can be used as a simple push button. STATICTEXT A static (read-only) text control. Usually used for displaying fixed text strings, but can also be used as a simple push button. FRAME A standard Windows frame control, consisting of a styled rectangular frame. Can be used as a simple push button. RECT A standard Windows rectangle control, consisting of a filled black, gray, or white rectangle. Can be used as a simple push button. To specify the class of a user control, specify one of the above keywords as the *first* subkey for the Ctl key. For example, to create a check box control: Ctl(3):CHECKBOX,"&Demo",size=(34,14),pos=(214,126) 1.2 A new built-in function createCtl() has been added to allow the dynamic creation of controls within the filter code: createCtl(n, c, t, x, y, w, h, s, sx, p, e) Dynamically creates a control with index n, class c, text t, coordinates (x,y), width w, height h, style s, extended style sx, properties p, and enable level e. All measurements are in DBUs. For x, y, w, and h, a value of -1 means use the default value. The class c should be one of the following predefined values: CC_STANDARD, CC_SCROLLBAR, CC_TRACKBAR, CC_PUSHBUTTON, CC_CHECKBOX, CC_RADIOBUTTON, CC_GROUPBOX, CC_OWNERDRAW, CC_STATICTEXT, CC_FRAME, or CC_RECT, 1.3 Tool tips are now provided for the OK, Cancel, Edit, Zoom-in, and Zoom-out buttons, as well as the progress bar, the host application static text field, and the preview window. Automatic tracking tool tips are also available for the TRACKBAR control class when the 'TopTip' attribute is specified. A full implementation of FD-specifiable tool tips for user controls will be available in a later release. 1.4 Most of the standard C run-time i/o library routines (stdio) are now exposed in FM. The following functions are now built-ins in FM: clearerr fscanf fclose fseek fcloseall ftell feof fwrite ferror getc fflush putc fgetc remove fgets rename flushall rewind fopen sprintf fprintf sscanf fputc tmpfile fputs tmpnam fread ungetc freopen The following stdio functions are not yet implemented. Use ftell() and fseek() instead: fgetpos fsetpos The following stdio functions are not implemented because they implicitly reference one of the standard i/o units (stdin, stdout, or stderr), which are not implemented in FM. Use the corresponding file-oriented function instead. getchar gets perror printf putchar puts scanf For documentation of these functions, see any standard C run-time library reference. 1.5 Two new built-in functions have been added: RGB(r,g,b) and RGBA(r,g,b,a). RGB() packs three 8-bit RGB color values (r, g, b) into a single 32-bit integer. RGBA() packs three 8-bit RGB color values and an 8-bit alpha channel value into a 32-bit integer. RGB() is useful for creating RGB color values for the 2nd argument of the setCtlColor() and setCtlFontColor() built-ins. For example, setCtlFontColor(12, RGB(255,255,0)) will set the text color for control 12 to yellow. 1.6 A new built-in intrinsic function COLOR(<color>) has been added. COLOR() takes as an argument the same syntax that the Color=<color> subkey takes. For example, <color> can be a simple color name (yellow, red, salmon), a qualified X11, HTML, JAVA, or Netscape color name (X11.AliceBlue, HTML.Aquamarine, JAVA.darkGray, NS.NetscapeGray), a Windows95 UI color name (COLOR_BTNFACE, COLOR_DESKTOP), an RGB triple (RGB(55,255,70)), an HTML-style hexadecimal color specifier in RGB order (#cc00ff), or a 24-bit hexadecimal constant in BGR order (0xff00cc). As an example, setCtlFontColor(12, COLOR(yellow)) will set the text color for control 12 to yellow. 1.7 Two new built-in functions have been added: setCtlTextv() and setDialogTextv(). These are similar to setCtlText() and setDialogText() but take a C-style i/o format string and a variable list of arguments to perform more sophisticated formatting of output strings. The calling sequences are: setCtlTextv(n, fmt, arg1, ...) and setDialogTextv(fmt, arg1, ...) where n is the index of a control, fmt is a C-style format specifier string, arg1, ... are optional arguments to be interpolated into the format string. 2. Changes ---------- 2.1 FM now asks the FD whether he/she wants to recompile the filter source code whenever the FD tries to run the filter and the compiled code is out-of-date (because either the source has changed or compilation options have changed). 2.2 User-defined dialog attributes (such as the background image and color, the title bar style, etc.) are now reset to their default values after a compilation. This fixes a problem in which some of these attributes were inadvertently "sticky" across compilations. 2.3 Dialog attributes such as the background image and color, the title bar style, the drag mode, etc., are now saved and restored across invocations of FM. 2.4 Coordinates for the Region= subkey of the Dialog key are now specified in Dialog Box Units (DBUs) instead of pixels. This means that the dialog region will now scale automatically across changes to the Windows System Font size. This change also applies to the relevant arguments of the built-in functions createRectRgn(), createRoundRectRgn(), createCircularRgn(), createEllipticRgn(), and createPolyRgn(). 2.5 The Color= and FontColor= subkeys of the Ctl key are now functional. Color=<color> sets the background or body color of the control to the specified color (or causes the body/background of the control to be transparent if Color=Transparent is specified). FontColor=<color> sets the color of text for the control. Note that the interpretation and validity of these subkeys varies among control classes. For some classes, the background color is meaningless or unmodifiable. For other classes (such as the PUSHBUTTON class), the FontColor subkey has no effect. The corresponding built-in functions setCtlColor(n, color) and setCtlFontColor(n, color) are now also functional. 2.6 The text buddy control for the default (STANDARD) scroll bar control has been changed from a read-only text field to an editable text field. This means that the user can now enter a numeric value directly in the text field to set the value of the control. 2.7 The built-in function chk(n) is now just a synonym for ctl(n), and the use of chk(n) is deprecated. 2.8 You can use an asterisk (*) instead of the special value -1 in a Size= or Pos= subkey to specify a component which is not to be changed. For example, Size=(40,*) can be used to change the width of a control to 40 DBUs without changing its height. 2.9 Tab stops have been removed from all controls in the expanded Edit and Advanced Edit areas of the FM dialog. These controls can still be accessed from the keyboard in most cases by using their shortcut keys. 3. Bug Fixes ------------ 3.1 FM now forces the dialog background to be redrawn whenever the dialog size is changed. This fixes a problem in which the background could be left in a stale state when, for example, the user entered or exited Edit Mode. 3.2 Occasionally FM could cause a GP if the user pressed a button or initiated a zoom-in or zoom-out while simultaneously trying to drag the preview image with the zero-drag option in effect. This bug has been fixed. 3.3 A problem in which the filter algorithm code could sometimes be recursively reentered has been fixed. 3.4 Some ambiguities in parsing FFW-style vs. FFP-style keys (such as the common Ctl key) have been resolved. 4. Known Problems ----------------- 4.1 For TRACKBAR controls, the Color= subkey has problems setting the background color of the control. The color will not be updated until the first time a user clicks on the track bar control. 4.2 The new dialog size is not always computed correctly when switching between edit modes or when changing title bar attributes. 4.3 Vertically-oriented scroll bars and track bars don't work yet. 4.4 For the STATICTEXT control class, the attributes 'EndEllipsis', 'PathEllipsis', and 'WordEllipsis' do not work. 4.5 Some features of Win95 controls require comctl32.dll version 4.71 or later. (E.g., setting colors for a progress bar requires 4.71 or later). Comctl32.dll is not a redistributable DLL, but can be obtained by installing Microsoft Internet Explorer 4.0 on your system. Earlier versions of comctl32.dll, such as version 4.70, will also work, but you may lose some functionality. 4.6 When the user presses ENTER in the text edit buddy of a STANDARD control, the control will "ding" even if the value entered is perfectly valid. |