Documentation for Win32lib v0.60.6
Table of Contents
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.6 19/September/2004
Fixed. When setHandler() is called internally by the library, it no longer
disables onXXX support. Note however that setHandler() when called by your
application will still turn off onXXX support.
Fixed. WS_EX_TOPMOST is a valid flag for the addStyle routine.
Fixed. clientToClient() now works.
Fixed. createMouseTrap() now works for controls whose parent is not the
window (eg. Group).
Fixed. Toolbar resizing no longer 'flashes' its child controls when the
window is being resized.
Fixed. getRandInt() no longer returns values outside the requested range.
Fixed. findParentWindow() now works for controls that are children of a
child Window.
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
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
GetPointerPosn()
SetPointerPosn()
ClickPointerLeft()
DragPointerTo()
removeNth()
ltrim() as they are no longer used.
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
- xPageSetupDlg
- ImageList_Create
- ImageList_AddIcon
- ImageList_GetImageCount
- ImageList_DragMove
- ImageList_BeginDrag
- ImageList_EndDrag
- ImageList_DrawEx
- ImageList_Add
- ImageList_AddMasked
- ImageList_SetBkColor
- CopyImage
- xGetDIBits
- GetLastError
- FindTextA
- ReplaceTextA
- CommDlgExtendedError
- RegisterWindowMessage
- FINDMSGSTRING
- uFindReplaceMsg
- xInitCommonControlsEx
- ChildWindowFromPoint
- ChildWindowFromPointEx
- getSystemMetrics()
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
- xGetSystemMetrics
- xShellExecute
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
- xPrintDlg
- xStartDoc
- xStartPage
- xEndPage
- xEndDoc
- xAbortDoc
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
- removeNth(),
- ltrim() for XPM support
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
- xMapWindowPoints
- xGetCursorPos
- xGetActiveWindow
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
- comctl32
- kernel32
- shell32
- xInitCommonControls
- True
- False
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()