Documentation for Win32lib v0.60.6
Table of Contents

Changes

History of Changes to Win32Lib.ew


This records, in brief, the major changes done to the source code. Where possible, the appropriate people are given credit as well.

V0.60.5 5/September/2004

  • Fixed. thanks to C K Lester drawLines() was crashing when a rectangle was specified.
  • Fixed. thanks to C K Lester The makedoc program that generates documentation has mishandling some "<" and ">" characters.
  • Fixed. thanks to Brian Broker. Disabled Scrollbars would not render correctly when using XP manifests.
  • Fixed. thanks to Matt Lewis. TreeViews would not render correctly when not using XP manifests.
  • Fixed. thanks to Andy Drummond. Under some circumstances, such as long running jobs, the library would crash in eventLoop() with bitwise operations of integers greater than 2^32.
  • Fixed. thanks to Brian Broker. clearWindow() was using the wrong color on Pixmaps if setPenBrushColor() had been also used for the Pixmap.
  • Changed. thanks to C K Lester. the w32HChange event is invoked when ListBox and ComboBoxes items are added or deleted.
  • Changed. The include file "w32start.ew" no longer automatically finds event handler routines. It now only finds ones that have been explictly registered with win32lib via the new registerRoutine procedure. This has been changed so that BIND can now find more routines that are not being used.
  • New. A system to create Add-On components, such as new control types. This is undocumented so far because I haven't worked out all the details. This can potentially reduce the run-time size of win32lib.
  • New. A new control, GroupAdv, is available. This is the test of a new add-on control system.
  • New. w32routine_id() is used to look up a registered routine name and return its real routine_id value.
  • New. registerRoutine() is used to register a specific routine in win32lib so that it can be found by w32routine_id().

    V0.60.4 23/August/2004

  • Fixed. thanks to Martin Stachon newUIObj can now handle "CAPTION=" to explicitly set a blank caption.
  • Fixed. Some resources were not being removed from internal tables after win32lib had stopped tracking them.
  • Fixed. The documentation for openDialog() now details the method to set initial focus.
  • Fixed. The default background colors for controls are now compatible with Windows XP manifests.
  • Added. deleteLVColumn() is used to remove a column (sub-item) from a ListView.
  • Enhanced. thanks to Hongyanto Setio. drawLines() can now accept an initial 2-element point.

    V0.60.3 13/August/2004

  • Fixed. thanks to Martin Stachon extractIcon() no longer fails with uninitialized variable.
  • Fixed. thanks to Christian Cuvier. The ability to set focus on Window controls that have a parent window but are not WS_CHILD controls is now fixed.
  • Fixed. Calling setCheck(Screen, . . .) no longer causes an infinite loop under Windows 2000.
  • New setToday() and getToday() routines for the MonthCalendar control.
  • Changed. thanks to cklester copyBitmapToFile() no longer creates 4-color bitmaps. Only 2, 16, and 256 colors are supported.
  • Changed. thanks to Tommy Carlier colorValue() now supports negative strings such as -"red". This is to handle the ambiguous "red", a 3-element sequence, being passed as a parameter.

    V0.60.2 08/August/2004

  • Fixed. isScreenPointIn() only worked for controls in the main window.
  • Fixed. The inner eventLoop() routine didn't cooperate well with OpenGL applications.
  • Fixed. WM_WHEELMOUSE events are no longer prevented from being seen by parent controls.
  • Fixed. Thanks to Craig Welch. The setListHScroll() now works with empty lists.
  • Fixed. Child windows are now added to the tabbing order if they have WS_TABSTOP flag.
  • Fixed. setEnable() can now disable a Window control.
  • Fixed. isChecked now correctly works with treeview controls.
  • Fixed. setWinMsgHandler() now works with the Screen control ID.
  • Enhanced. setCtlSize() can now take w32SameSize as one of the new dimension.
  • Enhanced. w32trim() will now strip off enclosing quotes after trimming off spaces. values. The will leave the corresponding dimension unchanged.
  • Enhanced. A number of routines that take a color value parameter, can now express that in various formats. see colorValue for details.
  • Enhanced. extractIcon() can now extract either the small or large icon images.
  • Enhanced. FGCOLOR is now supported in the newUIObj routine.
  • Enhanced. CAPTION in newUIObj now supports automatic lookup of symbolic captions from an external file.
  • Enhanced. setCtlSize() can now use the w32SameSize value to resize one dimension only.
  • Enhanced. If the handler for w32HMouseTrap returns any value, the mouse event is not passed on to the underlying control.
  • New. The includes file "rttext.e" and "options.e" are now used by win32lib. This introduces
  • UseText(), FormatMsg(), setUserLanguage() and getOpt(). These are used to lookup text equivalents for application defined 'symbolic' text. This can be used to implement .INI file lookups and run-time text replacements depending on the user's spoken language.
  • New. w32findKeyEx() is used to locate items in nested sequences.
  • New. w32replaceItem() is used to replace all occurances of a sequence element with another.
  • New. setMainWindow() is used to change which window is the primary one.
  • New. colorValue() is used to convert various color representations into a 24-bit value.
  • New. getIdFromDC() is used to find the control id given the device context.
  • New. split_rgb() is used to break a 24-bit color value into a 3-element sequence Red/Green/Blue values.
  • New. floodFill() is used to fill an area with a single color.
  • New. printRichText() is used to print formatted text from a Rich Edit control.
  • New. setEventLoop() is used to supply a replacement for the inbuilt message handler.
  • Changed. The textToNumber routine no longer ignores embedded commas.

    V0.60.1 2/July/2004

  • Fixed Thanks to Matt Lewis: Fixed the default font from 'Verdana' to 'MS Sans Serif'
  • Fixed Thanks to Matt Lewis: Fixed the documentation for setting the w32Defaults environment symbol.
  • Fixed Thanks to Elliott S. de Andrade: The "size=()", "width=()", and "height=()" formats in a form definition no longer crash the library.
  • Fixed Thanks to Elliott S. de Andrade: When adding or removing style flags from controls, sometimes the visualization wouldn't update.
  • Fixed Thanks to Elliott S. de Andrade: A null string passed as a file name to w32FileOpen() caused the application to crash.
  • Fixed: loadBitmapFromFile() did not report the filename in its error message when the file could not be found.
  • Fixed thanks to Andrew Hall: isChecked() now correctly returns the Checked state of a Treeview control.
  • Fixed: If a form definition string did not begin with a valid control type name, it would assume the first element was equivalent to "caption=17". Now it assumes that the control type is a LText control.
  • Fixed thanks to William Heimbigner: An invalid Event name passed to newUIObj() or createForm() would crash the application.
  • Fixed thanks to Greg Haberek: When a control definition with a one-character caption was presented to newUIObj(), the character's ASCII value was converted to a string and used as the caption instead.
  • Fixed thanks to Elliott S. de Andrade: Dragging the slider on a trackbar now works.
  • Enhanced: extractIcon() can now get both Large and Small versions of an icon.

  • li Enhanced:   

    Documentation for Win32lib v0.60.6
    Table of Contents

    [li]
    Enhanced:

    Category: Changes

    MenuItem controls with a blank caption are now taken be a menu spacer control.

  • New thanks to Tommy Carlier: removeHandler() can remove specific, previously established handlers. It is the reverse of setHandler().
  • New: A new control type MenuSpacer is now available. This is just a shorthand for a MenuItem with a caption of "-". It causes a line to appear in the menu.

    V0.60 30/June/2004

  • Fixed by Josef Jindra The resource leaks have been plugged.
  • Fixed by Jonas Temple. isChecked() and setCheck() now work for TreeView controls.
  • Fixed. setIndex(lv,0) now deselects all ListView items.
  • Fixed. thanks to Juan Herguijuela. the getPointerRelPos() no longer crashes when an invalid control id is supplied.
  • Fixed. thanks to Juan Herguijuela. The correct mouse position is now returned in a w32HMouse event when a user right clicks on a List-View's header bar.
  • Fixed. findTrackedObject() now checks the entire Tag value rather than just the first element.
  • Fixed. by Roland Stowasser. setText() now works for MenuItems.
  • Fixed. The resource leakage due to setting fonts has been fixed. You are now only likely to have problems if you have hundreds of simultaneous but different fonts in use. This will be addressed in a future release.
  • Fixed. setMousePointer() now ensures that the new shape is seen immediately rather than when the routine that called setMousePointer returns to Windows.
  • Fixed by Mario Steele. popup() now works for submenus.
  • Fixed by Martin Stachon getPointerRelPos() now works with child windows.
  • Fixed. by Cesidio Cianfarani setText() now correctly works with sub-Menus.
  • Fixed. Child windows now cooperate better with the drawing of other sibling controls.
  • Fixed. by Dan Moyer Documentation for getSystemInfo, and the FileOpen dialogs has been corrected.
  • Fixed. Trackbars and Scrollbars with negative values now report the correct position when using the thumb control.
  • Fixed. findParentWindow() now works when the 'child' control is a Window.
  • Fixed. The 'beeping' sound when use the Alt- combination has been removed.
  • Fixed. thanks to Aku Saya. getId() now always returns an integer value.
  • Fixed. thanks to Tone Skoda The NMLISTVIEW structure is now correctly defined.
  • Fixed. Opening a window no longer resets the default colors and font.
  • Fixed. setTextColor() now works with edit boxes, list boxes, and labels.
  • Fixed. setWindowBackColor() now works with scrollbars.
  • Fixed. Applications now respond correctly to desktop scheme changes.
  • Fixed by Martin Stachon. w32store() now works with RAM addresses above 2**31.
  • Fixed by Elliott S. de Andrade. Controls are now greyed out when disabled.
  • Fixed. by Tommy Carlier. setCtlPosition() now correctly moves the control rather than resize it as well.
  • Fixed. STATIC controls (labels, bitmaps...) that have SS_NOTIFY flag now receive mouse events.
  • Enhanced. setIndex(lv, w32SelectAll) now selects all listview items.
  • Enhanced. getText() for CheckBox, Radio now return "1" (checked) or "0" (not checked). The TriCheckBox returns "1", "0", and "2" (undetermined).
  • Enhanced. setText() can now be used for CheckBox, TriCheckBox, and Radio controls. "0" or "" to uncheck it, "2" for undetermined TriCheckBox, and anything else to check it.
  • Enhanced. setMousePointer() and restoreMousePointer() can now be used to set/restore a control and all its children controls.
  • Enhanced. by Tommy Carlier rgb() has been made to run 25% faster.
  • Enhanced. by Tommy Carlier copyBitmapToFile() has been made to run 560% faster.
  • Enhanced. setBackColor() now clears a pixmap to the specified color.
  • Enhanced. Can now run in old Windows versions such as Win95. But you still can't use control types you don't have in your windows system.
  • Enhanced. showWindow() now supports full screen mode.
  • New. getWinVersion() returns version information of the Windows system you are running with. A global constant WINDOWS_VERSION also has this in it.
  • New. centerControl() centers a control with respect to another nominated one.
  • New. by Tommy Carlier copyToTrueColorBitmap() creates 24-bit color Windows .BMP file
  • New. setIDName() used to give a name to a control.
  • New. getIDName() used to retrieve the name given to a control.
  • New. getNameID() used to retrienve a controlID value given it's name.
  • New. newUIObj() used to define a User Interface Object (a.k.a a Control).
  • New. getCaption() used to return a control's caption text.
  • New. getData() used to return a control's data value.
  • New. getValues() used to get the data from many controls in one call.
  • New. createForm() used to define a window and all the control in it, using a simple UI definition scripting language.
  • New. loadForm() used to get a form's definition from a file at runtime. This can then be used by createForm().
  • New. A new include file w32start.ew that provides an easy way to use the createForm abilities.
  • New. A new concept of MouseTraps have been introduced. These are sub-regions of a window that react to mouse events.
  • New. getWheelScrollLines() to fetch the number of lines that the user wants the mouse wheel to scroll by.
  • New. getUserName() to return the id of the logged-in user.
  • Changed. getText() will now return a control's caption if it has one, otherwise its data value.
  • Changed. When a RETURN key is pressed in an EditText field, focus is automatically moved to the next control in the window. This can be overridden by having a handler for w32HKeyPress and calling returnValue() when a VK_RETURN key is used.
  • Changed suggested by Andy Serpa. The library no longer uses routine names that have a high probablity of clashing with other people's naming conventions. Subsequently, many global routines that are not specific to Windows programming have been renamed. The old names are to found in tk_maths.e, tk_misc.e, tk_mem.e, ctypes.e, types.e that are now available through the RDS contributions page.

    V0.59.01 8/Jun/2003

  • New. When creating a control, you can add the w32AUTOCLOSE flag to cause the control to close its parent window when clicked.
  • New. Beep() to sound various beeps.
  • New. getClassName() to return the Windows Class name for a control
  • New. makeFront() to set the given window to the front of others.
  • New. findWindow() to search for a specific window running in the system.
  • Enhanced. the UserProperty routines are now faster if you use integer Property ID values.
  • Enhanced. addStyle and removeStyle also support the new w32AUTOCLOSE feature.
  • Fixed. by Cesidio Cianfarani setText() now correctly works with Menu and MenuItem controls.
  • Fixed. setIndex() now works with multiple selection lists.
  • Fixed. getPrinter() and getPrinterChoice() no longer fail to initialize the printer.
  • Changed. Removed dependance on the clib.e library. This was causing too many namespace clashes.

    V0.59 1/Jun/2003

  • Changed. When adding a button to a FlatToolbar, the caption used to be ignored if the 'y' value in the createEx() call was zero. This is no longer then case.
  • Changed. The initial setting is that label captions will not be used to determine hotkeys for following controls.
  • New. skipF10() will set whether or not the F10 key can set focus to the menubar (which is standard Windows behaviour)
  • New. The set of C-String API routines in now available from w32Kernel.ew
  • New. getFileInfo() can be used to get various properties of a file.
  • New. Current_Directory() used to get the current directory name.
  • New. Set_Directory() used to set a new current directory.
  • New. setAutoFocusLabels() is now required to be called to turn on & off the ability to use label captions as hotkeys for subsequently defined input controls.
  • New. getFullPathName() is used to get the complete path for a file and its full (long) file name.
  • Enhanced thanks to Aku Saya addIcon() now only returns zero if its parameter is zero.
  • Enhanced. getText() when used on a List or SortedList, returns the currently selected item's text.

    V0.58.09 25/May/2003

  • Fixed. thanks to Judith getText() now works correctly with TreeView controls.
  • Enhanced. thanks to Aku Sayu. getClientRect() will now also return the width and height.
  • Enhanced. thanks to Aku Sayu. The control defined after a label control will now get its hot key set based on the label's caption.
  • Enhanced. thanks to Tony Steward loadLVInfo() now permits icons to be load along with text.
  • Enhanced. setLVItem() and addLVItem() now permit numbers as well as text to be placed in ListView columns.
  • New. getColumnHeadings() is used to get the current listview column headings
  • New. setLVStyle() is used to set the extended listview styles.

    V0.58.08 15/May/2003

  • Fixed. The SimpleCombo now really is a simple combo. Before it was identical to the DropDownList. It now shows the edit box above a list. The list does not drop down - it is always visible.
  • Fixed. getText() now works correctly when specifying which part of a multi-part statusbar is being requested.
  • Fixed by Brian Broker. setIcon() is now recognising the inbuilt Windows icons.
  • Fixed. thanks to Judith setText() can now change the text of a submenu.
  • Fixed. thanks to Brian Broker. When tabbing into a Radio Button, it no longer causes a w32HClick event
  • Fixed. thanks to Pete Lomax. The facility to dynamically change the tooltip window size is now working correctly. to be generated for the control receiving focus. This is now consistant for
  • Fixed. by Martin Stachon. setWindowScrollRange() now shows the new scroll button positions immediately, rather than the next window repaint event.
  • Fixed. thanks to Martin Stachon. getClientRect() now work correctly when a toolbar is present.
  • Fixed. by Pete Lomax. The documentation for create() now lists all the control types. all type controls.
  • Fixed. by Robert Belleville. putStream() and getStream() now permits alternate representations of COM objects in RTF streams.
  • Fixed. by Robert Belleville. struct_PARAFORMAT() now correctly sets the Right_indentation and Offset fields.
  • Changed. The getText() function for StatusBar now returns just a simple string. It used to return both the string and the part number, but this is redundant ('cos you have to specify the part you want anyhow).
  • New. getActiveWindow() returns the ID of the application's active window.
  • New. setTabStops() is used to set the controls which can get focus during tabbing.
  • New. setCheck() and isChecked() now support ListViews. Thanks to Jonas Temple
  • Enhanced. When setText() is used on a MleText control, all single LineFeed characters are replaced by CarriageReturn-LineFeed combination.
  • Enhanced. setText() can now be used to change a TabItem's label.
  • Enhanced. by Elliott Sales de Andrade. setScrollRange() can now support values larger than 16-bits.

    V0.58.06 22/Apr/2003

  • Fixed. Resource leakage.

    V0.58.05 6/Apr/2003

  • Fixed. Setting the ListView column widths and justification now works when using the createEx() routine.
  • Enhanced. defineUSerProperty(), setUserProperty() and resetUserProperty() now all work with a list of controls too.

    V0.58.04 21/Mar/2003

  • Fixed by Andy Serpa. getLVChecked() now checks the correct row.
  • Fixed by Jonas Temple. getPrintChoice() now sets the printer DC when user supplied flags are submitted.

    V0.58.03 9/Mar/2003

  • Fixed. The setText() and getText() routines now work for top level menus.

    V0.58.01 22/Feb/2003

  • Fixed. Now moves to the correct control when a top-level window regains focus.
  • Fixed. by Roland Stowasser.The constant LVM_GETHOITEM was corrected to LVM_GETHOTITEM

    V0.58.00 01/Jan/2003

  • Fixed. When a window regains focus, the control that had focus also regains focus.
  • Fixed. When creating controls, the dimensions can now handle non-integers.
  • Fixed. RichEdit controls can now use getSelectedText() without crashing.
  • Fixed. expandTV() no longer causes images to flicker.
  • Fixed. When the first control in a window was a TabControl, then controls in its TabItems no longer 'bleed' through.
  • Fixed. The address() function no longer causes a memory exception.
  • Fixed. Calling invokeHandler for the Screen control no longer invokes the handler code twice.
  • Enhanced. The keyword 'Center' can now be used for the 'x' and/or 'y' dimension when creating controls.
  • Enhanced. When Win32lib has to force a crash, the true message is now displayed instead of the 'divide by zero' message.
  • Enhanced. It is now possible to specify the control that gets focus when opening a window, including the window in WinMain().
  • Enhanced. by Wolfgang Fritz. The validId() routine has been made to run twice as fast.
  • Enhanced. setIndex() can now be used on TreeView controls.
  • Enhancement. When a MonthCalendar date or date range is explicitly clicked then the w32HChange event now receives two dates.
  • New. setEndAction() is now available. This allows the coder to choose what happens when the main window is closed.
  • New. A new event, w32HIdle, can be handled. This is invoked while the the application is idle.
  • New. setWinMsgHandler() allows access to Windows messages before any standard Win32lib processing.
  • Changed. The first call to setHandler turns off the onXXX[] event interface. This should see a performance boost for applications using setHandler.

    V0.57.11 01/Sep/2002

  • Fixed. by Martin Stachon. Some button clicks produced a double w32HClick events.
  • Fixed. by Martin Stachon. The drawText routine failed with a type-check message
  • Fixed. by Martin Stachon. Edit controls did not display an I-Beam mouse pointer.
  • Fixed. Minor documentation errors.
  • Fixed. setScrollRange() now accepts negative values in the parameters.
  • Enhanced. by Jordah Furguson setScrollRange() can now uses large values (+ve and -ve).
  • Enhanced, by Jordah Furguson Rebars now use ID field rather than lParam for identifaction. This has sped up addToBand() a little.
  • Enhanced. When a rebar changes sizes, the w32HResize event is sent to the Screen control. This can be used to reposition other controls relative to the Rebar.
  • Enhanced. setMousePointer() nows also accepts a file name (.CUR or .ANI file).
  • Enhanced. setDragPointer() now supports different shapes for dragging depending on whether the Shift, Control or Alt keys are pressed or not.
  • Added. Two new events can be handled. w32HDropDown and w32HCloseUp. These are not supported by the onXXX interface.
  • Added. setReadOnly() used to set the read-only status of edit controls.
  • Added. setStyle() used to change the style flags of a control.
  • Added. autoSelect() used to allow/disallow text to be selected when the edit field gets focus.
  • Added. classAutoFocus() used to set the default auto-select behaviour for edit-type controls.
  • Added. getKeyState() used to find the depressed state of a specific key.

    V0.57.10 01/July/2002

  • Fixed. by Dan Moyer, setScrollRange now correctly works with Windows.
  • Fixed. store() and fetch() now correctly support unsigned integers.
  • Fixed by Martin Stachon the mouse shape is now more stable.
  • Fixed. Occasionally, when a window was opened, its controls were not drawn quite right. This has been fixed by forcing a repaint of the window when it is opened.
  • Fixed. The w32HScroll event now fires for Trackbar controls.
  • Fixed. A resource leak when releasing a DC has been removed.
  • Fixed. by Virtual B findItem() now works for ListView controls.
  • Enhanced. BUTTON type controls can now handle w32HMouse events.
  • Enhanced. allot(), store() and fetch() now directly support arrays.
  • Enhanced. The routine that deal with scrolling now all support horizontal scrollbars for Windows.
  • Enhanced. The w32HScroll (and onScroll) event are now also triggered when the user stops scrolling.
  • Enhanced. The w32HScroll event handler (but not onScroll) now receive an extra parameter that indicates the type of scroll event that triggered the handler.
  • Enhanced. When creating a Bitmap control, you can now specify the filename in the caption.
  • Enhanced. allot() now supports Single and Double floating point data types.
  • Enhanced. Frequently sent Windows messages are now handled faster. This is determined heuristically as the application runs.
  • Emhanced. setFont() now allows setting the font of multiple controls in one call.
  • Changed. drawText() now returns a sequence rather than an atom.
  • Changed. The internal names WINDOW, BUTTON, COMBO, EDIT, LISTBOX, SCROLLBAR, STATIC, MENU, POPUP, MENUITEM, PIXMAP, COMMON_CONTROL have been made global.
  • Changed. The setMousePointer() routine now saves the old pointer before setting the new one.
  • Added. restoreMousePointer() used to restore the mouse shape that was in use prior to the previous setMousePointer() call.
  • Added. setDragPointer() used to set the default mouse shape when dragging.
  • Added. signed_word() and unpack_sWord() used to get 16-bit signed integersfrom atoms.

    V0.57.9 24/June/2002

  • Fixed. The tooltip text now displays for buttons on a FlatToolBar
  • Fixed. Controls were wrongly being positioned if a toolbar was on the form.
  • Fixed by Roland Stowasser. setRect, setPen, and couple of other routines sometimes incorrectly positioned controls and the mouse if there was a toolbar present.
  • Fixed. If setHandler() was used for drag & drop, the mouse pointer was not changing when it moved over a target control.
  • Fixed. drawLines() is now using the pen settings again.
  • Enhanced. When you use setEnable on a ToolBar or FlatToolBar, all its buttons are also effected.
  • Enhanced. create now allows you to add tooltip text.
  • Enhanced. When you create a Menu, if you have a "!" in the text, it denotes a Command style rather than the normal Popup style.
  • Enhanced. getId(), setFocus(), setText(), and getText() now all support TreeView items.
  • Added subClassControl() is used to handle Windows generated controls.

    V0.57.8 17/June/2002

  • Added. by Euman, loadLVAttr is used to load bulk data into a listview.
  • Added. inspired by Euman, setNotifyHandler is used to set the handler for a WM_NOTIFY message.
  • Added. by Jordah Ferguson, setMenuRadio used to define a 'radio' set of menu items.
  • Added. by Tone Skoda, expandTV used to expand and collapse treeview controls.
  • Fixed. by Martin Stachon, The resource leak while using graphics routines has been removed.
  • Fixed. by Mike (vulcan) getClientRect() now takes into consideration whether or not a toolbar and statusbar are visible.
  • Fixed. by Thomas Parslow, the internal routine to release resources now uses an atom rather than integer. This enables better WinNT/2000/XP support.
  • Fixed. by Wolfgang Fritz. The isChecked routine now only returns True or False.
  • Fixed. by Andy Drummond, the deleteObject routine was only deleting explicitly tracked objects. It now deletes any object passed to it.
  • Enhanced. by Tone Skoda, getHandle can now be used to get the handle of a treeview item.

    V0.57.7 03/June/2002

  • Enhanced. setHint() now supports dynamic tool tip text.
  • Fixed by Tone Skoda, When the main window is closed, the application will always end now.
  • Fixed. A number of small memory leaks have been fixed.
  • Added. getTextHeight() and getTextWidth()
  • Added. assignFont() has been documented now.

    V0.57.6 19/May/2002

  • Fixed by Wolfgang Fritz. Using relative widths for panel sizes in a Statusbar no longer crashes with non-integer values.
  • Enhanced by Mario Steele wPuts() and DrawText() can also supply the text as a RAM address rather than a sequence.
  • Enhanced. setHandler() can now add routines to form a chain to execute when an event is triggered.
  • Added. tk_mem:zStringLength() function returns the length of a zero-delimited string given its address.
  • Added. invokeHandler() function to trigger a win32lib event.
  • Added. getReturnValue() function to get the value that will be returned to Windows.
  • Added. onXXX() function to turn on/off the support for onXXX[] syntax. Turning this is off results in faster event handling.
  • Added. selectDirectory() function. Uses a dialog to allow user to select a directory.
  • Added. getHandler(). Returns the routines set up for event handling.

    V0.57.5 12/May/2002

  • Fixed by Dan Moyer. Corrected some documentation errors.
  • Fixed. Removed the resource leaks caused by routines not running inside an Paint event handler.
  • Fixed by Thomas Parslow. putStream() doesn't crash at end of data now.
  • Fixed by Thomas Parslow. getPointerPos() now works when the mouse is to the left or above the window.
  • Fixed. A tabControl is now repainted to clear any wPuts() or drawing objects prior to making the newly selected TabItem visible.
  • Fixed. Tooltips now recognise '\r\n' to break lines.
  • Fixed by Roland Stowasser. Corrected the spelling of LVIS_STATEIMAGEMASK
  • Fixed by Roland Stowasser. Corrected the spelling of addXpm()
  • Added. setHintWidth() function is now availble to set the maximum width of a tooltip window.
  • Added by Dan Moyer. New predefined color 'SkyBlue'
  • Added by Matt Lewis. Listview controls now trigger an onClick event.
  • Added by Matt Lewis. getLVChecked() and getLVAllChecked()
  • Changed. The library now uses Logical font resolution by default.
  • Changed. The function convPctToPixels() is now a global one.
  • Changed. insertListViewItems has been renamed to insertLVItem
  • Changed. insertListViewColumn has been renamed to insertLVColumn

    V0.57.4 24/March/2002

  • Fixed by Matt Lewis. Delete All functions for ListView and TreeView now work.
  • Fixed by Martin Stachon. Put back 'include compat01.ew'
  • Fixed by Irv Mullins. Now handles clicking into an "empty" treeview without crashing.
  • Fixed. addItem() now works with empty text strings.
  • Fixed. by Judith Evans and Martin Stachon. removeTVItem() now correctly resets the 'has children' flag so that subsequent addTVItem() calls use the correct graphics.
  • Fixed by Martin Stachon. No longer crashes when using getRect() on a closed window.
  • Fixed. The demo program, 'generic.exw', now saves the text correctly.
  • Fixed. The setSelectedText() routine now works when the length of the selected text is zero.
  • Fixed by Brian Broker. limitText() now works.
  • Fixed by Thomas Parslow. GDI resource leak using wPuts and queryFont removed.
  • Fixed by Brian Broker. getText() nows returns the newly
  • Fixed by Martin Stachon. replaceObject() was not handling tagged resources.
  • Fixed Bernie Ryan. calling the Windows API "xGetScrollInfo" now works.
  • Fixed /addIcon() can now be called before any ListView, TreeView, ComboBoxEx, or FlatToolBar has been created.
  • Fixed The Destroy event is now triggered before the control is destroyed.
  • Fixed The Destroy event, when triggered for the main window, no longer crashes.
  • Enhanced. The Win32LibVersion constant now has a 4th entry; the date of the version.
  • Enhanced. The getControlInfo() function now supports a new info type - CONTROLINFO_classinfo. This returns a sequence containing the data used by the control when created - such as Name of control type and default background color.
  • Enhanced. setText() no longer generates a warning message for controls that do not support setting the text.
  • Enhanced. setText() now supports atoms, integers, formatting mask, as well as straight text.
  • Enhanced. MleText controls no longer have a Horizontal scroll bar. This means that they are now automatically in word-wrap mode.
  • Enhanced. The Mouse event now responds to Mouse Wheel movements.
  • Enhanced by Guillermo Bonvehi. shellExecute can now use NULL for the 'verb' parameter.
  • Enhanced. shellExecute() can now supply the style flags as a sequence of individual flag values.
  • Enhanced by Thomas Parslow. The bitBlt routine can now handle the source and destination being the same bitmap.
  • Enhanced. getText() and setText() now work with MenuItems.
  • Enhanced. Added Minimized and Maximized keywords that can be used in OpenWindow, ShowWindow, and WinMain routines.
  • Enhanced. The sendMessage(), w32Func() and w32Proc() routines can now take string arguments. These are automatically converted to lzpstr 'C' data items for you. The memory is acquired and released automatically.
  • Enhanced. destroy() can now be used to remove a TabItem from a TabControl
  • Enhanced. setFont() for RichEdit controls now allows you to specify that the change affects the entire text or just the insertion point (the default).
  • Enhanced. wPuts() can now specify a X,Y position to move to before displaying text.
  • Enhanced. wPuts() can now accept numbers as the second parameter.
  • Enhanced. When creating a StatusBar control, you can now specify the panels in the statusbar.
  • Enhanced by Brian Broker. addTabs() can now add tabstops to a list box.
  • Enhanced destroy() now works on all control types and releases child control resoures as well.
  • Enhanced. getOpenFileName() now supports selecting multiple files.
  • Added. There is a new routine makeMenu() which is a shorthand way of creating an entire menu structure for a window.
  • Added. A new routine setSubFields() allows you to create sub-fields in the status bar. setText(), getText() and setHint() now support these sub-fields.
  • Added. A new set of routines are available that implements user defined properties for controls. These routines are defineUserProperty(), setUserProperty(), resetUserProperty(), and getUserProperty().
  • Added. drawLines() routine allows a multiple disjoint line segments of varying colors to be rendered in one call. This is faster than calling setPenColor()/drawLine() multiple times.
  • Added. setTVText() used to change the text of a TreeView item.
  • Added. collapseItem() used to hide a TreeView item's children.
  • Added. toggleItem() used to hide or show a TreeView's children.
  • Added. setTVImages() used to change the TreeView item's images.
  • Added. getFocus() returns the id of the control that has focus.
  • Added. EzCreateFont() is now a global function.
  • Added. assignFont() updates the font in a control's Device Context
  • Added. by Brian Broker. insertText() and appendText().
  • Added. findItem() to locate an item in a List or Combo type of control.
  • Added. getLastMsg() returns the latest windows message.
  • Added. setLVAttr() is used to set special sorting requirements for ListView controls, including user-defined routines.
  • Changed. expandItem() only takes one parameter now. It no longer needs the id of the TreeView control.
  • Changed. When creating a TabItem, the new TabItem gets focus.
  • Changed. SIZENESWPointer has been renamed to SizeNESWPointer to conform to the naming convention of the other standard Pointer Shape names.
  • Changed. uFindReplaceMsg has been renamed w32FindReplaceMsg to conform with the naming convention used with other global constants.
  • Changed. insertListViewItem() now returns a sequence {index, itemid}
  • Changed Brian Broker. The application's default icon is now set to the same as Euphoria's.
  • Removed by Martin Stachon. Removed obsolete Windows 3.1 identifiers.
  • Removed. The struct_LVDISPINFO() routine was removed because it wasn't used internally and has very little use to anyone.

    V0.55.5 & V0.55.6 were alpha/beta versions.

    V0.55.4

  • Fixed. invokeHandler()
  • Fixed by Martin Stachon. Cursor constants declarations.
  • Fixed. getLVItemText() validates its parameters

    V0.55.3

  • Fixed by Martin Stachon. w32HBreak/w32HPause event calls now work
  • Enhanced. Windows now recieve DoubleClick (CS_DBLCLKS added to vWindowClassStyle)
  • Fixed. getSelf() works for onOpen (added pushSelf(id) to WinMain())
  • Fixed by Jess Harpur. msgMessage in MSG definition changed to UInt
  • Fixed. limitText()
  • Fixed. getStreamCallback()
  • Fixed. onChange[] for MonthCalendar

    V0.55.2

  • Enhanced by Martin Stachon. getFocus() function added - gets id of control which has focus.
  • Enhanced by Martin Stachon. onChange[] event for ListViews added
  • Fixed by Martin Stachon. createEx() for ToolBar buttons when using captions
  • Enhanced by Martin Stachon. removed CS_HREDRAW, CS_VREDRAW from vWindowClassStyle - windows don't flicker.
  • Fixed by Martin Stachon. crash with pause/break key.
  • Fixed by Martin Stachon. getIndex() for ListViews
  • Fixed by Martin Stachon. isScreenPointIn()
  • Fixed default button
  • Fixed context menu with right-click
  • Fixed tooltips for PushButton in FlatToolBar

    V0.55.1 26/Dec/2000

  • Fixed. Group controls now are visible in Windows.
  • Enhanced. A new onActivate event is available. It occurs after a window is open and is passed no parameters.
  • Fixed. The CBN_SELCHANGE event now invokes an onChange handler rather than an onClick handler.

    V0.54.6 23/Nov/2000

  • Fixed by Dan Moyer
    The documentation from "findchildren" onwards is now in the correct font.
  • Fixed. by Travis Beaty
    Using setIndex() for controls that don't support this function no longer crashes.
  • Fixed. by Travis Beaty
    The documentation for findChildren() has been corrected.

    V0.54.5 21/Nov/2000

  • Fixed. by Matt Lewis
    The TAB order is now set correctly when subclassing a combobox.
  • Fixed. The TAB key is now correctly handled which avoids a BEEP on some controls.
  • Added. setTabCodes(). It is now possible to specify which key(s) are to act as TAB keys.
  • Added. setTabEnabled(). It is now possible to specify whether a control reacts to a TAB key or not. li Fixed. by Gwen
    getPointerPosn() now longer crashes.
  • Enhanced. The create() and createEx() functions can now optionally replace the default style flags instead of combine with them. This is done by suppling the replacement flags as a sequence of flags rather than an atom.

    V0.54.4 10/Nov/2000

  • Fixed. by Davi Figueiredo
    The setClientRect() now correctly handles windows with Toolbars.
  • Fixed. by Davi Figueiredo
    The documentation for openDialog() is now much improved.

    V0.54.3 8/Nov/2000

  • Fixed. by Dan Moyer
    If a window is opened as either Modal or Dialog, the library ensures that the window cannot be minimized.
  • Added. isMinimized(), isMaximized() These functions let the application know if a window is minimized or maximized (or not).
  • Fixed. The routine removeStyle() now works plus it can remove extended styles as well.
  • Fixed. The "subclassing" error 460 has been resolved.
  • Fixed. Converting a number to a 16-bit signed integer now correctly handles negative values and values between 32000 and 32767.
  • Added. addStyle() can be used to add styles to existing control styles.
  • Added. getWindowInfo() is used to get various information about a window.
  • Changed. The library no longer uses Euphoria's memory management routines.

    V0.54.2 5/Nov/2000

  • Fixed. by Davi Figueiredo
    The routines to set the scroll position now provide the correct control id for getSelf() calls from Scroll handlers.

    V0.54.1 4/Nov/2000

  • Fixed. by Davi Figueiredo
    The routine dropFiles() now has the correct number of parameters.

    V0.54

  • Fixed. Can now use setHint() an a top-level window.
  • Fixed. No longer triggers an onScroll event if the scroll position hasn't actually changed.
  • Fixed. Now handles setting focus after a control has been destroyed.
  • Fixed. The freeing of string memory has been made reenterant.
  • Fixed. getMultIndices() and getMultItems() now cope with no items selected.
  • Fixed. No longer crashes when a TVN_DELETEITEM event occurs for treeview controls.
  • Fixed. The use of Modal windows no longer crashes the Application.
  • Enhanced. warnErr() now allows the user can now opt to ignore repeated warnings.
  • Enhanced window scrollbars. Standard scroll bars on windows windows now trigger onScroll events
  • Enhanced. create(), createEx(), setClientSize(), setCtlSize(), setRect(), and setPenPosition() In addition to the current method, you can now supply dimensions relative to the control's parent in terms of percentages, plus optional pixel offset. You can even align things to the edges of the parent. Optionally you can specify minimum and maximum sizes.
  • Enhanced. Extra validation is being done to ensure that Window Handles are being used with the correct control ID.
  • Enhanced The event handlers onXXX can now be set for the Screen ID. This will capture all events of the given type for all controls in the application. For example onKeyDown[Screen] will be fired for all KeyDown events on all controls.
  • Enhanced getTextExtent() now takes either a single text string or multiple strings. It returns the maximum, minimum and total pixels for width and height. This change will not effect existing code.
  • Added getCharExtent() This returns the average width and height for a text character in a given control.
  • Added getVScrollPos(), getHScrollPos(), setVScrollPos(), setHScrollPos() These get and set the Vertical and Horizontal positions of scrollbars that are attached to windows via the WS_HVSCROLL
  • Added classDefaults() This allows you to set the default styles for each control.
  • Added setClientRect() This resizes your window so that the client area is a specified.
  • Added doEvents() This allows Windows to check for message events during event handling.
  • Added acquire_mem(), release_mem(), new_memset(), and manage_mem() These are the new memory management routines that are used in win32lib. The use of free(), allocate() and allocate_string() is discouraged inside win32lib.ew. Please use the new routines instead.
  • Added getPosition() This returns a sequence containing the pixel position of the top lefthand corner of the control
  • Added copyFile(), deleteFile(), moveFile(), createDirectory(), getTmpPath(), getTempFile() These are wrappers for the Windows file/directory commands.
  • Added openDialog() This simulates a dialog-type window. It opens the specified window and directs all events to that window until its closed.
  • Added showChars() This function sets an internal flag that causes wPrint() to show displayable characters in readable form. The initial setting is to show such characters like Euphoria's print() function.
  • Added eucompress.exw This is a Windows program that compresses any euphoria source code by removing unrequired spaces, empty lines and comments.
  • Changed setPosition() has been renamed to setPenPosition()
  • Changed moveWindow() has been renamed to setRect()
  • Changed getExtent() has been renamed getCtlSize()
  • Changed getSize() has been renamed to getRect()
  • Changed setSize() has been renamed to setCtlSize()
  • Changed The routines renamed above are actually still defined in a compatability file "compat01.ew" which will not be distributed when version 1.00 is released. This file is automatically included in the library for now, but from v1.00 onwards will be distributed but not included inside win32lib.ew
  • Changed The distribution now comes with a number of toolkit files. tk_mem.e (memory management) tk_maths.e (Mathematical functions) tk_misc.e (Miscellaneous) These can be used with any Eu project. These files are "included" by win32lib.ew An additional file, tk_fileio.e, is also distributed but it is not used by win32lib.
  • Changed. onClick events now fired for all non-static controls that don't capture mouse events. For example, the StatusBar.
  • Changed Now uses the DoubleClick time interval for the maximum mouse click time tolerence.
  • Changed For those routines that deal with positioning controls etc, the X and Y (left and top) coordinates are relative to the parent's client area, not the parent's borders. This may break some code that currently manually adjusts these values to account for Toolbar and StatusBar controls. These sort of adjustments are now done automatically.
  • Removed. The routines free_strings(), allot_string(), and allocate_struct() have been removed.

    V0.53

  • Reorganised WndProc and SubProc routines to improve maintenance and speed.
  • Removed CBS_DISABLENOSCROLL from ComboBox styles by Wolfgang Fritz
  • Removed CBS_SIMPLE from SortedComboBox styles by Wolfgang Fritz
  • fix bug that destroyed the window_range whenever a control was created by Davi Figueiredo
  • fix bug that allowed an apps windows to be closed while a modal window was active by Davi Figueiredo
  • fix bug in which extended flags were only being used if supplied by the caller by Davi Figueiredo
  • added test for "is Destroyed" when activating contols in a tabitem. by Renzo Beggia
  • fixed getSelf() bug in which the wrong ID was returned after a subsequent sendmessage(). by Matt Lewis
  • changed onClick to fire on left button up (inside same area and < 0.5 secs) rather than on left button down. by Derek Parnell
  • hotkey activation on buttons, now checks for onClick() handler. by Derek Parnell
  • Fixed bug. User can no longer set focus to a control that is invisible or disabled. by Derek Parnell
  • onKeyPress can now (optionally) return an alternative key or -1 to ignore the key.
  • added getHandles(), findParent(), findParentWindow(), and findChildren()
  • added registerHotKey()
  • add changed cursor during a Drag & Drop operation. by Matt Lewis
  • fixed bug which prevented hotkeys being used for tabitems.
  • fix bug. The wrong parameter was being used to set a Progress Bar's range. by Wolfgang Fritz
  • added some error checking for invalid Style flags etc.. when creating a control.
  • documented validId(), getSelf(), getHandle()
  • The following routines where hidden: ILAddIcon(), ILAdd(), ILAddMasked()
  • Documented (briefly) many ListView and TreeView functions.
  • renamed getParent() to getTVParent()
  • enhanced setWarning() to treat all "warning" messages as abort messages.
  • warnErr() now supports user defined clean up routines like abortErr() does.
  • Fixed bug. setFont(..., Bold) now sets a true bold character. by Travis Beaty
  • added setFontWeight() to set how dark 'bold' really is.

    V0.52a

  • fixed getText() for RichText controls by David Cuny
  • restored scrollbars to RichText controls by David Cuny

    V0.52

  • added by Thomas Parslow
  • deleted
  • added LimitText() by Derek Parnell
  • fixed bug in putting a "stream" of text in to a RichEdit control by Matt Lewis
  • allow onEvent handlers to return a ZERO return code. by Derek Parnell
  • fixed CreateDC bug in getPageSetup(). Was not selecting the correct printer device nor modes. by Wolgang Fritz
  • fixed memory allocation bug in getText() [for RichEdit controls] and getRichText(). by Derek Parnell
  • enabled getRichText() to get all the text in a control. by Derek Parnell
  • enabled onClose handler to return a value. A non-zero return means to abort the close request. by Derek Parnell
  • fixed bug in wmScroll() when the hWnd was not one of the apps handles.
  • getText() and setText() now supports multipart StatusBars. by Derek Parnell
  • added support for user-defined clean up routines. See new attachCleanUp() and detachCleanUp(), and updated abortErr(). by Derek Parnell

    V0.51

  • enabled DefaultFont to be set by user. by Wolfgang Fritz

    V0.50c

  • removed CBS_DROPDOWNLIST from ComboBox controls

    V0.50b

  • Fixed drag & drop flag when creating a window
  • fixed bug in applying extended flags when creating controls.

    V0.50a

  • added support for destroying controls.
  • Don't try to get the handle to a destroyed control.

    V0.50

  • added support for extended flags in controls
  • added by Matt Lewis
  • Support for ListBoxes, ProgressBar controls by Matt Lewis
  • added getSelectedText(), setSelectedtext()

    V0.47l

  • set default window back color
  • set mainWindow when creating first window (so getFontExtent() will work)

    V0.46l

  • Added Default key processing for PushButtons

    V0.46h

  • added hotkey support via registerHotkey()
  • isVisible() and isEnabled() now always returns True for TabItem controls

    V0.45r

  • added window text align status
  • system font ANSI_VAR_FONT instead of SYSTEM_FONT
  • Align text in wPuts()
  • added getFontMetric()

    V0.45q

  • Abort if queryFont() called before a window has been created.
  • added instance() to registerClass()

    V0.45p

  • Set default font when creating a pixmap, and controls
  • Pass instance handle when creating controls
  • added test for "is TabItem" when activating controls inside a tabitem

    V0.45o

  • added range check to isStockResource()
  • When deleting objects, only release if it if it belongs to the supplied handle
  • Abort if an invalid id was passed to getHandle()
  • Allow NULL owner to be passed.
  • fixex bug: insertItem() now allows for Windows zero-based indexing.

    V0.45m

  • added xChooseFont
  • defined DWord and Ptr as aliases for Long
  • CHOOSEFONT structure
  • only handles WM_COMMAND events if receiver is direct parent of control

    V0.45l

  • use COLOR_BTNFACE as default window color
  • Separated the WndProc and SubProc routines.
  • added NullBrushID
  • changed isStockResource() logic
  • When deleting objects, ignore a null handle
  • prevent the tracking of NULL resources
  • Release printer resource before freeing printer.
  • fix resource leak with tooltips
  • Pass parent's handle when creating a control

    V0.45j

  • added PenWidth

    V0.45k

  • added
  • COLORDLG structure
  • Added drag-n-drop support to ListBox, EditText, MLEdit, Window controls.
  • added onDragAndDrop and onEvent handlers
  • added destroyed window tracking

    V0.45j

  • Error Handling, setWarning()

    V0.45i

  • Default Window Color
  • added HTrackBar, VTrackBar, TabControl, TabItem controls

    V0.45g

  • added window group tracking
  • Tabitem support
  • improved the tabbing between controls

    V0.45f

  • added some low-level internal routines: pack_word(), abs()
  • defined UInt and Lpsz
  • TC_ITEM structure
  • NMHDR structure
  • added window range tracking and window tab item tracking
  • added support for WM_NOTIFY messages
  • fixed bug. Now releases string memory when creating new controls.

    V0.45e

  • Extended styles by Matt Lewis
  • added 3D-look to ComboBox controls

    V0.45b

  • add getClientSize()

    V0.45

  • added POPUP window class
  • added getClientPoint()

    V0.44h

  • added window hotkey tracking

    V0.44b

  • added
  • added window cursor tracking
  • set the custom mouse pointer shape on mouse events

    V0.43d

  • added paintDC stack

    V0.43b

  • Track printer resource

    V0.43

  • added
  • PRINTDLG structure
  • DOCINFO structure
  • Created pseudo-class Printer_ and made this and Screen_ hidden
  • In listBox, replaced ES_AUTOSCROLL with WS_VSCROLL
  • added printer support
  • Hide EzCreateFont(), createWindow() from the user
  • set default font info for controls
  • added queryFont()
  • Fix bug. The clear() function now clears a control rather than cut it.

    V0.42e

  • ensure getSelf() returns the correct id for child controls.

    V0.42

  • added
  • restored WS_VSCROLL attribute to ComboBox
  • transparency color support
  • passes 4 parameters instead of 3 to onMouse handler
  • added shift flags to key up/down/char handlers
  • getRect() now returns 4 parameters.

    V0.41a

  • Register each window as a new class.

    V0.41

  • Defined standard color constants
  • added
  • MSG structure
  • added ToogleButton, TogglePicture controls
  • Created pseudo-class Screen_
  • Track current self and return values
  • added tooltips
  • Ignore empty strings in wPuts()
  • font information saved for all controls and windows
  • added getFontSize(), setTextAlign(), getClientRect()
  • Only apply user flags for non-picture controls when creating a new control
  • allow user to return a value from onEvent()
  • added onLostFocus() handler.
  • added onTimer handler

    V0.40

  • added these definitions
  • added ToolBar, StatusBar, PictureButton controls
  • resize "contained" widget during a RESIZE message.

    V0.31

  • made findKey() global
  • Support for private Windows messages
  • run onClose action before hiding window
  • added getNumber()

    V0.30

  • removed stockResource
  • added isStockResource()