WinBinder.org The native windows binding for php

Changelog

 

********************************************************************************

 WINBINDER - The native Windows binding for PHP

 Copyright © 2004-2005 Hypervisual - see LICENSE.TXT for details
 Author: Rubem Pechansky (http://winbinder.org/contact.php)

 Changelog

********************************************************************************

This is the changelog archive. For the updated changelog after version 0.42, see http://winbinder.org/doc/changelog.txt

------------------------------------------------------------------------------
Version 0.42 (alpha) - build 158
Date: Oct 30, 2005
------------------------------------------------------------------------------

Internal release only

------------------------------------------------------------------------------
Version 0.41 (alpha) - build 157
Date: Aug 12, 2005
------------------------------------------------------------------------------

- Manual corrections: wb_set_area()
- Manual: New "Building WinBinder" page
- Added project layout_editor to \code
- New database function: db_get_index()
- New database function: db_create_database(). Was separated from db_open_database(), access privileges might be not be enough for a user to create a database
- Other minor fixes in some database functions
- Setting the width of a ListView column to zero was not possible. Fixed.
- parse_rc() now recognizes the Calendar control

------------------------------------------------------------------------------
Version 0.41 (alpha) - build 156 (patch)
Date: May 31, 2005
------------------------------------------------------------------------------

- New wb_system_info() parameter: backgroundcolor

------------------------------------------------------------------------------
Version 0.41 (alpha) - build 155 (patch)
Date: May 31, 2005
------------------------------------------------------------------------------

- Fixed DLL for PHP 5 (was not working)

------------------------------------------------------------------------------
Version 0.41 (alpha) - build 154
Date: May 29, 2005
------------------------------------------------------------------------------

NEW FEATURES AND MAIN CHANGES

- Implemented HTMLControl. Many thanks for Jeff Glatt for his beautiful code. See html_control.phpw in the samples directory.
- Created function wb_set_location() for HTMLControl. See manual for details.
- wb_get_system_info(): Unrecognized parameters now return NULL instead of zero
- wb_get_system_info("osversion") now returns more descriptive textual information
- wb_get_system_info(): "osversionnumber" renamed to "OSNumber"; "sysmemory" divided into "totalmemory" and "freememory". See manual for details.
- When calling wb_get_size() for a ListView, it optionally returns an array of column widths. See manual for more information.
- Custom-drawn windows are now created with the system background color instead of blank or an empty buffer. Call wb_draw_rect() if you ned a black background.
- NakedWindows now must be have WBC_CUSTOMDRAW style if they are meant to be custom-drawn, just like the other window classes
- NakedWindows now accept WBC_BORDER style which creates a standard pop-up window border
- Now calling wb_set_text() with text==null and item==true clears all items from the ListView, while calling wb_set_text() with text==null and item==false (or empty) clears all columns from the ListView. Also resurrected wbtemp_clear_listview_columns().

FIXES

- Modal and modeless dialogs were not returning IDCLOSE when using the top right 'x' button. Fixed (hanks to yafuka and davide for the code).
- PHP process was not being removed from memory when using a dialog class as main window. Fixed (thanks davide).
- Fixed bug inadvertedly introduced in version 0.40: Extra column titles were being added to a ListView each time wb_set_text() was called.
- wb_draw_text() was crashing if an invalid font index was being passed to it. Fixed.
- parse_rc() was generating wrong code. This code generated green bitmaps in Frames and PushButtons with images. Fixed.
- Fixed bug inadvertedly introduced in version 0.40: The WinBinder DLL was not working in Windows 98 because wb_get_system_info() was calling a function not available in Win98. Fixed.
- wb_refresh() was not always refreshing a window/control when 'now' was TRUE. Fixed.
- wb_draw_rect() is marginally faster

OTHER CHANGES

- Removed temporary function wbtemp_set_listview_column_widths()
- Some updates in php.ini
- Included php_dist.ini with better settings for project distribution
- Several corrections in manual
- Several fixes in .phpw scripts
- Corrected some compiler-specific code (for Visual C++)
- Many other small fixes as usual

------------------------------------------------------------------------------
Version 0.40 (alpha) - build 153
Date: May 18, 2005
------------------------------------------------------------------------------

- Several potential memory leaks prevented
- Added two new options to wb_get_system_info(): "appmemory" and "sysmemory"
- Included leaks.phpw (memory leak test program)
- Replaced constant __func__ for the more standard __FUNCTION__

------------------------------------------------------------------------------
Version 0.40 (alpha) - build 152
Date: May 3, 2005
------------------------------------------------------------------------------

******************************************************************************
*           WARNING: THIS VERSION IS NOT 100% BACKWARDS COMPATIBLE.          *
*                 SOME CHANGES WILL AFFECT EXISTING CODE!                    *
******************************************************************************

NEW FEATURES AND IMPORTANT CHANGES

- Big changes and enhancements to the documentation.
- Calendar control added (thanks to Davide for the code). See calendar.phow.
- HyperLink control added (thanks to Davide). See manual and hyperlink.phow.
- InvisibleArea control added. See invisible.phpw.
- Treeviews have learned lots of new tricks. All treeview nodes are now assigned a unique identifier. You can now: Select any node; Get the id of the currently selected node; Create treeview nodes in any possible level; Delete selected nodes and their children; Store and retrieve an integer, string or float value into any treeview node; Expand or collapse a node; Get the parent, level and expanded/collapsed state of a node; Set the icons for a node.
- It is now possible to set and retrieve integer values from combo boxes and list boxes with wb_set_value() and wb_get_value(). See manual and combo_list_boxes.phpw.
- wb_set_area() will control maximum and minimum window size in resizable windows with constants WBC_MINSIZE and WBC_MAXSIZE. See resizable.phpw.
- New notification message WBC_RESIZE is used to resize and/or reposition controls when main window changes size. It is now possible to fake split windows. See resizable.phpw.
- Drawing persistently on a window is now possible by using new WBC_CUSTOMDRAW style (set automatically for naked windows) and WBC_REDRAW notification message. See customdraw.phpw and borderless.phpw.
- New function wb_get_level() gets the level of a treeview node
- New function wb_get_state() expands / collapses a treeview node
- New function wb_set_state() get the treeview node expanded / collapsed state
- New function wb_set_range() replaces some functionality of wb_set_value()
- New function wb_destroy_font(), must be called after wb_create_font() to avoid leaks
- New function wb_destroy_control()
- Tab controls can now be nested (one level only). See tabcontrol.phpw.
- New tool h_exec created to make script execution easier (see readme at \tools\h_exec). Source now has WinBinder (BSD-style) license and included at \source\h_exec.
- wb_create_control(): added parameter $ntab to prevent conflicts with checkbox / radiobutton values
- The callback function is only notified when there is a corresponding flag, except for default notifications. For example, to detect when a window resizes itself, wb_create_window() must use the WBC_NOTIFY style and include WBC_RESIZE in param. See "windows messages and events" in manual.
- wb_get_value(), wb_get_selected(), wb_set_value(), wb_set_selected(): meaning was reviewed and made more consistent in many cases, dropped some nonsense uses
- wb_delete_items() works with ListBox, ComboBox, ListView, TreeView
- wb_draw_image() accepts optional transparent color
- wb_get_system_info() option: "temppath" returns the temporary path
- wb_set_registry_key(): added type float
- wb_message_box() return values had some changes (see manual)
- New meaning of $font parameter in wb_set_font(): -1 means system font, 0 means current (latest) font, which is the default
- New parameter $forcelowercase in get_folder_files(), default is TRUE
- Use wb_set_size() to set width of ListView columns
- Dropped parameter numitems from wb_delete_items(). To delete multiple items, use an array.
- May set the text of a RTFEditBox upon creation (wb_create_control), does not need to use wb_set_text() anymore. See rtfedit.phpw.
- wb_get_registry_key() now returns "" (an empty string) if an entry exists but is empty and NULL if it does not exist
- wb_set_image() returns a bool, added $param1 and $param2 parameters
- New bool parameter $clientarea added to wb_get_size() and wb_get_position() allows selecting which type of window area to return (may be removed in the future)
- wb_set_pixel() function renamed to wb_draw_point()
- wb_set_text(): added parameters $item and $subitem
- wb_set_text(): removed $append parameter (was not being used)
- wb_set_text() will now change a menu item text
- wb_set_text() for ListViews: If a null element is used on the array, the respective column is skipped.
- wb_set_item() function dropped and mapped to wb_set_text()
- Replaced constant WBC_DEFAULT by IDDEFAULT (meaning zero anyway)
- WBC_DBLCLICK / WBC_HEADERSEL / WBC_GETFOCUS are now bit flags
- wb_create_items(): parameter $items was changed for treeviews. Order now is: Caption, value, where, image, selectedimage, insertiontype
- Dropped constant WBC_KEYPRESS, replaced by WBC_KEYDOWN / WBC_KEYUP
- Changed parameters of wb_set_item_image() (see manual)

FIXES

- WBC_SINGLE flag meaning (for ListViews) was inverted. Fixed.
- WBC_DBLCLICK, WBC_MOUSEMOVE, WBC_MOUSEDOWN, WBC_MOUSEUP were being passed incorrectly. Fixed.
- Multiple icons appeared in the taskbar in multiple-window applications. Fixed.
- Multi-line Label controls were not being displayed properly. Fixed.
- Random garbage returned when retrieving text of non-existing items in ListViews. Fixed.
- wb_create_items() corrections thanks to Hans
- wb_set_text() could not change the value of the first item on a ListView. Fixed.
- wb_set_text() in ListViews: fixed bug when attempting to change text of a line where the first column is zero.
- wb_set_registry_key() was reporting an error when a bool was passed to it. Fixed.
- Fixed resource leak in wb_create_bitmap.
- Resizing / moving controls was not working with maximized windows. Fixed.
- Many other fixes, bugs and several potential crashes in several functions

SCRIPTS

- Other scripts:
	html_control.phpw: a mini-browser using cwebpage.dll
	radio_groups.phpw: how to work with separate radio button groups
	serial.phpw: shows how to access a serial port
	tray_popup.phpw: shows a custom-drawn window that pops up from the taskbar
- Many changes and fixes to existing scripts

OTHER CHANGES

- Hyperlink: variable text color
- Fixed resource leak in wbCreateBitmap()
- Removed WS_EX_APPWINDOW	styles from window classes AppWindow, ResizableWindow, PopupWindow, NakedWindow so there will be only one icon in multiple-window apps
- Dropped wb_get_pixel_direct(), using wb_get_pixel() with four parameters instead
- Dropped wbtemp_delete_listview_item()
- Dropped wbtemp_clear_listview_columns()
- Rewrote wb_delete_items. Now it works equally well for ListBox, ComboBox, ListView, TreeView
- Added trim() functions to wb_generic.c
- Added wb_control_calendar.c
- Added Calendar class, lparam1 is selected unix stamp
- InvisibleButton class added
- New sample invisible.phpw
- wb_get_value(), wb_get_selected(): meaning was reviewed and made more consistent in many cases
- I'm making sure everything has long tags to avoid future problems
- May use wb_set_size() to set width of ListView columns: wb_set_size($list, array(200, null, 60, 60))
- ListView WBC_SINGLE flag meaning was inverted, Fixed.
- Reviewed wb_message_box() return values (see manual)
- Fixed bugs and several potential crashes in wb_draw_text(), wb_set_font(), wbtemp_create_toolbar(), wbtemp_create_menu(), wbtemp_set_accel_table(), wb_set_image() and other places

------------------------------------------------------------------------------
Version 0.39 (alpha) - build 146
Date: Apr 23, 2005
------------------------------------------------------------------------------

- wbSetEnabled(): corrected return value for EnableWindow()
- New function: wbGetTreeViewItemLevel()

------------------------------------------------------------------------------
Version 0.39 (alpha) - build 145
Date: Apr 22, 2005
------------------------------------------------------------------------------

- Two levels: AssignHandlerToTabs()

Main new features and changed features

- Fixed treeview expand/collapse, was not working
- New wb_get_system_info() option: "temppath" returns the temporary path
- wbtemp_set_text(): added parm item
- wb_set_text() can change a menu item text
- Added type double to wb_set_registry_key()
- wb_get_registry_key() now returns "" if an entry exists but is empty and NULL if it does not exist
- Created wb_set_icon() (Which is not for .ico files, but for controls with icons: ListView and TreeView)
- New function: wbtemp_get_treeview_item_text()
- Dropped wb_set_item_image(), mapped to wb_set_image()
- Dropped wbtemp_create_listview_images()
- Dropped wbtemp_get_treeview_item_state()
- Dropped wbtemp_set_listview_item_image(), wbtemp_set_treeview_item_image(), wbtemp_get_treeview_item_parent()
- Dropped wbtemp_set_treeview_item_state()
- Dropped (new) functions wb_set_item_value(), wb_get_item_value()
- Dropped (new) wb_set_item_text(): use wb_set_text() with $item
- wb_create_control(): added param ntab to prevent conflicts with checkbox / radiobutton values
- wb_set_image(): added $param2 parameter
- wb_set_text(): added $item parameter
- wb_set_text(): removed $append parameter
- wb_set_value(): added $item parameter
- wbtemp_create_control(): added $ntab parameter
- wbtemp_set_range() renamed to wb_set_range(), new public function that replaces some functionality of wb_set_value()
- wbtemp_set_accel_table() now unsets the accel table using NULL

Main fixes

- Fixed a coding error that could crash some applications
- Multi-line labels were not working properly. Fixed.
- wb_set_registry_key() was reporting an error when a bool was passed to it. Fixed.
- Fixed several potential crashes in wbtemp_create_toolbar(), wbtemp_create_menu(), wbtemp_set_accel_table(), wb_set_image() and other locations

Changes in PHP scripts

- Changes in accel.phpw
- Changes in make_release.phpw
- New sample code: tabcontrol.phpw
- Many changes in tabcontrol.phpw
- Updated _scale_controls in wb_resources.inc.php to deal with extra parameter in wb_create_control()

Changes in C code

- Fixes in ConvertLineBreaks()
- Potential crash in wbSetText() avoided (NULL test)
- New function ConvertLineBreaks() used by wbtemp_create_control(), fixed coding error that was crashing some apps
- wb_set_image() now gives an error if hImage is invalid and other fixes
- wbLoadImage(): hIcon NULL checking was wrong, now nIndex is UINT to prevent negative indices
- Fixed crashes in wbtemp_create_toolbar(), wbtemp_create_menu(), potential crash in wbtemp_set_accel_table(): wrong zend var type, test against NULL pointers, more
- Maximum images in a control ImageList is now the bitmap nwidth (because it does not make sense to have more than with 1-pixel elements in an ImageList) or 128, whichever is lower
- Fixed several potential crashes in wbCreateListViewImageList(), wbCreateTreeViewImageList(), CreateToolbar()
- Corrected wb_set_image() parameters
- Updated return values in wb_control_treeview.c: wbSetTreeViewItemText(), wbSetTreeViewItemValue()
- New function wbSetMenuItemText()
- wbSetText(): added parm item
- wbDrawText(): Used DT_EDITCONTROL
- Updated return values in wbSetTreeViewItemText(), wbSetTreeViewItemValue()
- New function: wbGetTreeViewItemText()
- wbCreateControl(): added nTab parameter
- wbCreateListViewImages() renamed to wbCreateListViewImageList()
- wbSetImage() parameter order changed

------------------------------------------------------------------------------
Version 0.39 (pre-alpha) - build 140
Date: Apr 07, 2005
------------------------------------------------------------------------------

WARNING: SOME CHANGES WILL AFFECT EXISTING CODE

Main changes

- wb_create_items() parameters changed for treeviews. Order now is: caption, value, level, image1, image2
- WBC_DBLCLICK, WBC_MOUSEMOVE, WBC_MOUSEDOWN, WBC_MOUSEUP were being passed incorrectly through pwbobj->style instead of pwbobj->lparam. Fixed.
- Drawing persistently on a window made possible using WBC_CUSTOMDRAW style, WBC_REDRAW flag
- New tool h_exec created to ease script execution (see readme at \tools\h_exec). Source was adapted to WinBinder license and included at \source\h_exec.
- Treeviews have learned many new tricks:
	- wb_create_items() may store an integer, string or float value to a treeview node
	- wb_set_value() stores an integer, string or float value into the selected treeview node
	- wb_set_item_value() stores an integer, string or float value into a treeview node
	- wb_get_item_value() returns the value stored in a treeview item with wb_create_items() or wb_set_item_value()
	- wb_get_value() returns the value stored in the selected treeview item with wb_create_items() or wb_set_item_value()
	- wb_set_selected() now selects treeview nodes
	- wb_set_item_image(): added one parameter (selectedimage)
	- wb_create_items() returns an array of unique integers (actually the HTREEVIEW handles) of the newly inserted items
	- wb_delete_items() deletes a treeview item. Receives the unique integer (the HTREEVIEW handle) that refers to it
	- wb_get_selected() now returns a unique integer (actually the HTREEVIEW handle) referring to the selected treeview item
- The callback function is only notified when there is a corresponding flag. For example, to detect when a window resizes itself, wb_create_window() must use the WBC_NOTIFY style and include WBC_RESIZE in param.
- WBC_DBLCLICK / WBC_HEADERSEL / WBC_GETFOCUS are bit flags
- New Treeview public functions:
	wbtemp_create_treeview_item()       -> mapped to wb_create_items()
	wbtemp_get_treeview_item_value()	-> mapped to wb_get_item_value()
	wbtemp_get_treeview_item_parent()   -> mapped to wb_get_parent()
	wbtemp_get_treeview_item_state()    -> mapped to wb_get_state()
	wbtemp_set_treeview_item_image()    -> mapped to wb_set_item_image()
	wbtemp_set_treeview_item_selected() -> mapped to wb_set_selected()
	wbtemp_set_treeview_item_state()    -> mapped to wb_set_state()
	wbtemp_set_treeview_item_text()     -> mapped to wb_set_item_text()
	wbtemp_set_treeview_item_value()    -> mapped to wb_set_item_value()
- New functions (in wb_windows.inc.php):
	- wb_get_parent() -- returns the parent node of a treeview node
	- wb_get_state() -- expand / collapse treeview nodes
	- wb_set_state() -- get treeview node expanded / collapsed state
	- wb_get_item_value() -- get treeview node value
	- wb_set_item_value() stores an integer, string or float value into a treeview node
- wbtemp_set_treeview_item() was removed (was not used anywhere)
- New constants WBC_MINSIZE, WBC_MAXSIZE used with wb_set_area() to control maximum and minimum window size in resizable windows
- wb_draw_image() accepts optional transparent color
- Callback function on WM_SIZE (windows style must have the WBC_NOTIFY notification flag on)
- New constant WBC_REDRAW, used to redraw a custom-drawn window when necessary. This includes a window being resized.
- New constant WBC_RESIZE, used to resize and/or reposition controls when main window changes size
- Resizing / moving controls was not working with maximized windows because wb_get_size() was returning WBC_MAXIMIZED insted of window size. Fixed.
- New flag: WBC_CUSTOMDRAW for owner-drawn windows (flags is automatic for naked windows, no need to declare it)
- wb_set_item() function renamed to wb_set_item_text() -- alias added to wb_windows.inc.php, will be removed in the future
- wb_create_items() now works with combo boxes too
- wb_set_item_image() returns a bool
- wb_set_item() could not change the value of the first item on a ListView. Fixed.
- wb_set_item(): If a null element is used on the array, the respective column is skipped.
- wb_set_item(): bug when trying to change a line where the first value is zero. Fixed.
- New bool parameter clientarea added to wb_get_size() and wb_get_position() allows selecting which window area to return
- New function wb_destroy_font(), must be called after wb_create_font() to avoid GDI leaks
- Added meaning of font parameter in wb_set_font(): -1 means system font, 0 means current (latest) font, which is the default (ATTENTION: these defaults are different from those of wbDrawText()!!!)
- New parameter $forcelowercase in get_folder_files(), default is TRUE
- New function wb_get_pixel_direct() for faster performance than wb_get_pixel()
- Replaced constant WBC_DEFAULT for IDDEFAULT (meaning zero anyway)
- Dropped constant WBC_KEYPRESS: replaced by WBC_KEYDOWN and WBC_KEYUP
- wb_windows.inc.php, wb_create_items(): code correction (thanks to Hans)
- Fixed bugs in wb_draw_text()
- wb_set_font() crashed with invalid font handles. Fixed.
- Many, many changes in documentation.

Changes in PHP scripts

- New scripts:
	- resizable.phpw: demonstrates setting minimum/maximum size for resizable windows, changing control size and/or position based on window size, how to fake a split window
	- treeview.phpw: demonstrates new tricks with treeviews
	- customdraw.phpw: demonstrates how to use custom drawn windows / persistent bitmaps
	- html_control.phpw: a mini-browser using cwebpage.dll
	- radio_groups.phpw
	- rtfedit.phpw
	- serial.phpw
	- tray_popup.phpw
- Changes to existing scripts:
	- calc.phpw: may be called from anywhere
	- listview.phpw: some updates
	- ttfreader.phpw: was not reading data from all TTF files
	- Corrected radio groups in focus.phpw
	- Todo.phpw: Old call to db_get_wrap_version() replaced by db_get_info("version"), thanks to runner60
	- borderless.phpw: made simpler, uses persistent bitmaps, no need to a Frame control anymore
	- Other changes
- New resources: h_setup.ico, browser.bmp

Changes to C code

- Moved error message from wbCreateWindow() to wb_create_window(), now with fatal status
- Treeviews:
	- New treeview functions: wbSetTreeViewItem(), wbGetTreeViewSelectedItem(), wbAddTreeViewItemChild(), wbAddTreeViewItemSibling(), wbAddTreeViewItemLevel(), wbGetTreeViewItemValue()
	- wbSetTreeViewSelectedItem() renamed to wbSetTreeViewItem()
	- wbCreateTreeViewImages() renamed to wbCreateTreeViewImageList()
- Dropped custom message WBWM_KEYPRESS: replaced by WBWM_KEYDOWN and WBWM_KEYUP
- New constants WBC_MINSIZE, WBC_MAXSIZE used with wbSetWindowArea() to control maximum and/or minimum window size
- WM_ERASEBKGND message is being processed in NakedWndProc()
- Naked window class: wc.hbrBackground was GetStockObject(WHITE_BRUSH), changed to NULL to avoid flicker on application startup
- ImageButtons were not being drawn: fixed DefaultWBProc, used wbGetWBObj(lpdis->hwndItem)
- New parameter in wbGetWindowPosition(): bClientRect
- Message WM_SIZING is processed to control window size based on WBC_MINSIZE, WBC_MAXSIZE settings
- New parameter bClientRect added to wbGetWindowSize()
- wbDrawBitmap() may draw with optional mask using new parameter clTransp
- WBOBJ structure: field "handle" renamed to "hwnd", "pbuffer" field added, lparam2 replaced by a union with rcTitle, arMin and arMax or lparams[8]
- In wbGetWindowSize(): may opt between GetClientRect() or GetWindowRect
- Added parenthesis to some constants (0x00010000 + 103), etc.
- In wbCallUserFunction() removed ?: operator from line ZVAL_LONG(z1, (LONG)id)
- wb_control.c: Fixed resource leak on wb_set_image
- wb_control.c: Fixed two resource leaks in SetTransparentBitmap()
- Created function wbDestroyFont()
- Changed meaning of nFont in wbSetControlFont(), wbGetFont(), wbDestroyFont() -- (ATTENTION: these defaults are different from those of wb_draw_text()!!!)
- Created wbGetPixelDirect()
- Windows memory functions replaced by Zend equivalents in wb_bitmap.c
- Removed IsBadReadPtr() call in wbGetBitmapBits(), was not working for large images and doesn't appear to be necessary anyway
- Small changes in message strings

------------------------------------------------------------------------------
Version 0.38 (pre-alpha) - build 133
Date: Mar 7, 2005
------------------------------------------------------------------------------

- After switching to another program and back, wb_destroy_window() destroyed the main window instead of the dialog. Fixed.
- Modeless dialogs did not always pass the focus to the calling window when closed. Fixed.
- wb_detect_instance() renamed to wb_get_instance(). Now uses a much better algorithm. See wb_get_instance() help topic and sample single_instance.phpw
- ToDo list: many revisions, some existing items flagged as done
- In most (but not all) errors, the warning message will now display the name of the function where the error occurred
- Item #276 almost solved: wb_get_system_info("DiskDrives") returns the list of available disk drives
- More changes in PHP sample programs
- More updated help topics

Changes in C code

- All calls to zend_error() recoded to display actual function name instead of zif_function_name, thanks to Zend function get_active_function_name()
- Fixed modeless dialogs focus bug by rewriting WM_DESTROY in ModalWndProc() and ModelessWndProc() and not processing WM_CLOSE anymore.
- wb_window.c: SetForegroundWindow() / BringWindowToTop() replaced SetFocus() in several places
- Removed EnableWindow() calls from ModelessWndProc

------------------------------------------------------------------------------
Version 0.37 (pre-alpha) - build 132
Date: Mar 5, 2005
------------------------------------------------------------------------------

- Item #367, "Merge wb_get_image_size() with wb_get_size()", done: wb_get_image_size() was removed and merged with wb_get_size(), which is now used for bitmaps and icons as well. Calls to wb_get_image_size() are still valid, but it is advised to substitute them for wb_get_size() in your code; obsolete functions will be dropped in the future.
- LayoutDialog class and related code removed; layout_editor project removed
- MSVC / MinGW / PellesC directories removed from /compilers; Lcc-win32 subdirectory moved from /compilers to /tools; /compilers subdiretory removed
- Several changes in PHP scripts
- Many updated help topics

Changes in C code

- wbGetBitmapDimensions() renamed to wbGetImageDimensions(), now it retrieves icon dimensions as well as bitmaps

------------------------------------------------------------------------------
Version 0.37 (pre-alpha) - build 131
Date: Mar 2, 2005
------------------------------------------------------------------------------

Changes in library

- Implemented item #184, "Single instance option". New function wb_detect_instance(), used to detect a previous instance of an application. This is used when the programmer wants only one running instance. The function optionally brings the previous instance window to the front.
- Implemented item #73, "Always on top". Windows can have the Always on Top attribute if they are created with the WBC_TOP style or if their style is changed via wb_set_style(). This is item #73 (thanks to Htay Win)
- Solved bug 180, "Closing modeless dialogs terminates applications". Now IDCLOSE only closes the application when sent to the main application window
- Implemented item #83, "Borderless windows with backgrounds". New window class: NakedWindow creates a window with no border, and no title bar. A Frame control is used as the background buffer.
- New class ImageButton allows custom buttons with several states using a single bitmap
- Automatic tooltips in ImageButtons (buggy in Windows XP, but not in Win2k)
- New function wb_set_area(), sets the dragging area of a borderless window (NakedWindow class)
- Messages WM_*BUTTONDBLCLK were passed via pwbobj->lparam instead of pwbobj->style. Fixed.
- wb_draw(): text with WBC_MULTILINE flag (formerly WBC_LINES) was not being wordwrapped. Fixed.
- wb_get_function_address() tries more options expanding function names before it gives up
- New constant WBC_MULTILINE (at last) replaces WBC_LINES in classes Label and EditBox. Classes Slider, ListView and TreeView will maintain WBC_LINES. The two constants currently have the same value to guarantee backwards compatibility, but it is advised to replace WBC_LINES in your code where applicable because the values may change in the future.
- Changed WBC_LINES in wb_resources.inc.php to WBC_MULTILINE where applicable
- New constants: WBC_NORMAL, WBC_MINIMIZED, WBC_MAXIMIZED
- wb_set_size() now accepts WBC_NORMAL, WBC_MINIMIZED, WBC_MAXIMIZED
- wb_get_size() now returns WBC_MINIMIZED, WBC_MAXIMIZED
- When wb_set_image() is applied to a window that is minimized to the taskbar (i.e. with the WBC_TASKBAR style), it also changes the taskbar icon at the same time
- WBC_COLLAPSED renamed to WBC_TASKBAR (at last!). WBC_COLLAPSED is still valid, but will be removed in the future
- Modeless dialogs (ModelessDialog class) don't have minimize / restore buttons anymore. For minimize / restore buttons, use the AppWindow class instead.
- Added option "ExtensionPath" to wb_get_system_info() to retrieve the PHP extensions directory
- ListView items always included "default" icons if an image was assigned to them. Fixed -- now a "non-icon" (index = -1) is assigned.
- wb_windows.inc.php, wb_create_control(): line breaks converted to Windows format as in wb_set_text()
- Auxiliary function parse_ini() was not accepting comments after the section name, e.g. "[Settings]  ; This is the main section". Fixed (now it simply ignores what comes after the "]")
- In parse_ini(): Empty entries inserted incorrect data in the return array. Fixed.
- Solved item #313: In parse_ini(): Additional parameter $convertwords translates the words "yes", "on", "true", "no", "off", "false", and "null" into their values
- WBC_MIDDLE declaration was missing. Fixed.
- New borderless.phpw script demonstrates borderless windows, ImageButton class, Always on Top window property, single application instance
- Changed WBOBJ, WBOBJ_RAW, WBOBJ_SIZE constants because of new field added to WBOBJ structure
- Simplified freeimage.inc.php DLL calls to take advantage of the new name expansion options in wb_get_function_address()
- New, revised PHP database library (thanks to Hans Rebel) with many changes that provide a much more consistent and better documented library. Includes several enhancements, in-code documentation and more. See release note in the /code/inc/db folder.
- Included OOi extension again
- Changed hello_oo.phpw to demonstrate a simple OOP technique which can be used in PHP 4 and PHP 5 and does not use the OOi extension. The existing hello_oo.phpw was moved to to /samples/ooi and renamed to ooi_hello.phpw.
- New console2window application converts php.exe to php-win.exe and vice-versa changing only one byte in the executable. This has some advantages: The new php-win.exe is smaller, can be easily created on the fly by a console application, and does not need php.exe anymore. Thanks to aurelian for the tip. Based on original PERL script by Jan Dubois.
- New smaller php-win.exe does not need php.exe anymore
- New sample script: taskbar.phpw
- New samples subdirs: ooi, fi (FreeImage), db
- Added db_test.phpw to Samples/db
- Moved ooi.inc.php to /code/ooi and adjusted sample scripts accordingly
- New subdirectory: /code/db and adjusted sample scripts accordingly
- New subdirectory: /code/fi (FreeImage) and adjusted sample scripts accordingly
- File freeimage.dll moved to /php/phpw/ext directory, freeimage.inc.phpw now calls wb_load_library("ext\\freeimage")
- Changed WBC_LINES in some scripts to WBC_MULTILINE where applicable
- Minor changes to the following sample scripts:
	- hello.phpw
	- manytests_main.phpw
	- listview.phpw
	- sysinfo.phpw
	- focus.phpw

Changes in documentation

- winbinder_manual.chm renamed to winbinder.chm to avoid the "The window name ... passed to HH_GET_WIN_TYPE has not been specified" error
- Brand new documentation for all db_ functions and related topics, thanks to Hans
- Corrected/enhanced/added the following help topics:
	- parse_ini (completely rewritten)
	- generate_ini
	- get_folder_files
	- parse_rc
	- wb_get_system_info
	- wb_create_image
	- wb_get_image_data
	- wb_set_visible
	- wb_call_function
	- WinBinder objects
	- Others

Changes in C code

- Fixed custom WinBinder messages: Changed range from WM_USER to WM_APP
- New window class "wbNakedWnd" (NAKED_WINDOW_CLASS)
- wbCreateWindow() registers a custom message for each application / window name. Used to detect a running instance
- New function wbGetRequestedAppWindow(), used to detect a running instance
- New field lparam2 added to WBOBJ structure, reserved for internal use (no user access). lparam is kept as the parameter that is passed in functions wb_create_control() and wb_create_window().
- Created function wbSetWindowArea()
- wb_window.c: bMinimizeToTaskBar removed, WBC_TASKBAR is now tested directly
- wb_draw.c: Added DT_WORDBREAK to WBC_MULTILINE case in wbDrawText()
- wbGetLibraryFunction(): removed several wsprintf()'s, more expansion options
- Changes in wbGetWindowSize(), wbSetWindowSize() to minimize / maximize windows
- wb_window.c: nShowMode parameter added to wbSetWindowSize()
- wb_window.c: AddTaskBarIcon() renamed to SetTaskBarIcon(), made public, added bModify parameter to it
- wb_control.c: wbSetImage() calls SetTaskBarIcon if window is minimized
- phpwb_winsys.c calls Zend function cfg_get_string() to obtain the partial extension path
- wb_window.c: Created new static variable, pwndMain (the main application window)
- wbDestroyWindow() was changed to "eat" WM_CLOSE messages that come from windows other than the main window. This should prevent any window except the main one to close the application
- Small changes to wbCallUserFunction() error messages

------------------------------------------------------------------------------
Version 0.36 (pre-alpha) - build 128
Date: Feb 16, 2005
------------------------------------------------------------------------------

Changes in library

- wb_draw_text(): parameter font may be set to NULL to use most recently used font
- wb_set_font(): parameter font is now optional, may be set to NULL to use most recently used font
- wb_get_image_data() has an extra parameter to skip each fourth byte, must set to TRUE for use with FreeImage library
- Fixed an error that forced users to always use the last parameter in wb_poke() when data was not a NUL-terminated string
- wb_poke(): "Zero length contents" message changed to "NULL contents"

Changes in PHP scripts

- dib.phpw now shows how to convert a BMP to a FreeImage() DIB and vice-versa
- Added function FreeImage_Rescale() to freeimage.inc.php

Changes in documentation

- Corrected/enhanced/added the following help topics:
	- wb_draw_text
	- wb_draw_image
	- wb_set_font
	- wb_create_image
	- wb_get_image_data (new)
	- wb_wait (wrong )
	- wb_get_focus (wrong <title>)
	- db_delete_field (wrong <title>)
	- db_free_result (wrong <title>)
	- What is WinBinder? (wrong <title>)

Changes in C code

- wb_font.c: Changed the font indices. Now zero means no font; this allows NULL to mean "default font" in WinBinder functions.
- wbSetControlFont() could never accept -1: fixed.
- wbGetBitmapBits() can optionally skip every fourth byte of the RGBQUAD (32-bit) data, yielding true RGB (24-bit) data
- wb_poke: replaced strlen() by the default length of the string passed to the function

------------------------------------------------------------------------------
Version 0.36 (pre-alpha) - build 127
Date: Feb 15, 2005
------------------------------------------------------------------------------

Changes in library

- wb_wait(): default pause was changed to zero. Now it is very quick when the pause value is zero
- New function: wb_get_image_data(), returns bitmap color data
- Single line selection ListViews:
	- Use flag LVS_SINGLESEL in RC file
	- New constant WBC_SINGLE
	- Change in wb_resources.inc.php
- Solved bug #400, "Placing an image in a ListView makes text in the cell disappear"
- wbDestroyWindow() now returns the keyboard focus to the calling window if a non-modal dialog is destroyed (previously released as a patch)
- Corrected globe in toolbar.bmp, was transparent

Changes in PHP scripts

- New sample script: focus.phpw
- Corrected/enhanced the following sample scripts:
	- manytests.main.phpw

Changes in documentation

- All database functions documented, database section reviewed, thanks to Hans
- Corrected/enhanced/added the following help topics:
	- wb_seek()
	- wb_call_function()
	- wb_draw_rect()
	- wb_draw_image() - was missing
	- wb_wait()
- Cosmetics: all HTML tables reset to default CSS style

Changes in C code

- wb_winsys.c, wbCheckInput(): dwTimeout can be zero now; a shortcut was added to speed things up when dwTimeout is zero
- wb_bitmap.c: new function wbGetBitmapBits()
- wb_bitmap.c: static GetBitmap() renamed to ReadBitmap()
- Several other changes

------------------------------------------------------------------------------
Version 0.36 (pre-alpha) - build 126
Date: Feb 9, 2005
------------------------------------------------------------------------------

Changes in library

- More options in wb_wait(): WBC_MOUSEUP, WBC_KEYUP
- Bug: wb_wait was always returning upon keyboard events regardless of flags: fixed.
- wb_wait: changed parameter order, now flags is last
- New constant WBC_KEYUP, used in wb_wait()
- Moved the OOi interface to a separate file

Changes in applications and examples

- New sample: dib.phpw, needs freeimage.inc.php
- Script freeimage.inc.php added to the distribution
- Corrections and small changes to make_release.phpw

Changes in documentation

- Corrected/enhanced/added the following help topics:
	- wb_create_font()
	- wb_exec()
	- wb_get_focus()
	- wb_get_system_info()
	- wb_send_message()
	- wb_set_focus()
	- wb_wait()

------------------------------------------------------------------------------
Version 0.36 (pre-alpha) - build 125
Date: Feb 9, 2005
------------------------------------------------------------------------------

Changes in library, relevant to PHP programmers

- New aliases accepted as accelerators in menus or in wb_create_control($mainwin, Accel, ...): "ESC", "PGDN", "PGUP", "INS", "DEL"
- wb_create_image(): two optional, extra parameters for use with image libraries (like FreeImage): bmi, bits
- wb_draw_text() now accepts three different vertical alignments: new constants WBC_TOP, WBC_BOTTOM, WBC_MIDDLE
- wb_poke(): an incorrect NULL test was improperly invalidating some results. Fixed.
- wb_send_message(): 0xFFFF (65535) can be used as first parameter (HWND_BROADCAST in Windows API)
- wb_exec(): new 'o' parameter will "shell execute" a phpw file instead of running it. It will usually run it anyway, except if the user has changed the .phpw association.
- wb_exec(): new parameters 'c' or 'w' run a phpw file in console or windowed mode, respectively
- wb_exec() will give a warning if the executable/target file does not exist
- New constant: FTA_REGULAR (Same as FTA_NORMAL)
- Item #300 (resize toolbars automatically) - already implemented
- Some resource leaks solved

Changes in documentation

- New topics:
	- wb_draw_text()
- Corrected/enhanced the following help topics:
	- Using keyboard accelerators
	- wb_call_function()
	- wb_create_control()
	- wb_create_font()
	- wb_create_image()
	- wb_exec()
	- wb_get_function_address()
	- wb_get_size()
	- wb_get_system_info()
	- wb_load_library()
	- wb_send_message()
	- wb_set_size()
	- wb_set_visible()
	- wb_wait()
- New tips, new sample code, more corrections, more keywords

Changes in applications and examples

- Code page data in application dll_functions.phpw
- manytests_main.phpw: renamed some files, other small tweaks
- ttfreader.phpw: one phpw source file only, new accelerators, double-click now closes the Font Select dialog, several small fixes
- More examples: wait.phpw
- Other fixes

------------------------------------------------------------------------------
Version 0.35 (pre-alpha) - build 123
Date: Jan 26, 2005
------------------------------------------------------------------------------

Changes in library, relevant to PHP programmers

- "plus" string accepted as accelerator in menus or in wb_create_control($mainwin, Accel, ...)
- Implemented items #244. #293: New function wb_wait() can be used as a simple delay or to verify if a key or mouse button was pressed, useful for lengthy operations
- New constant WBC_KEYDOWN, used in wb_wait()
- Parameter linewidth works correctly in wb_draw_rect() now
- wb_draw_text() can accept flags WBC_CENTER, WBC_LEFT, WBC_RIGHT, WBC_LINES, WBC_ELLIPSIS
- wb_create_font() had undefined values for optional parameters, fixed
- New wb_get_system_info() parameters (part of item #276):
	- "commandline": The original Windows command line including the executable file (PHP.EXE)
	- "consolemode": A boolean indicating whether console (DOS box) is active or not
	- "computername": The name of the computer, in a network
	- "username":  The name of the user, in a network
	- "screenarea": The total area (x, y, width, height) of the screen, in pixels
	- "workarea": The valid area (x, y, width, height) of the screen, in pixels
	- "exepath": Path to the main executable (PHP.EXE)
	- "systemfont": The default interface font, which will be used in the controls
- New function: wb_get_focus(), returns the control or window that has the focus
- New notification: WBC_KEYPRESS
- Edit controls send the WBC_KEYPRESS notification message when a key is pressed. lparam2 contains the key code

Changes in applications and examples

- New examples: combobox.phpw, wait.phpw, sysinfo.phpw, accel.phpw
- Welcome has a new button to call the To Do app (item #146)
- To Do changed so it can be called from anywhere
- In listview_sort.phpw, handler was not processing IDCLOSE. Fixed.
- In test_struct.phpw, STRUCT_WBOBJ and STRUCT_WBOBJ_SIZE are undefined constants.

Changes in C code

- Some new WBC_* constants in wb.h, changed phpwb_export.c accordingly
- wbMakeAccelFromString(): buffer increased to 99 characters, strings added
- wbDrawRect() now uses MoveTo / LineTo instead of FrameRect()
- wbDrawText() now processes text flags
- wbExec() calls WB apps, param may be "windowed", "console" or nothing
- wbGetSystemInfo() changed to LONG
- wb_window.c: DefaultWBProc(): WBWM_KEYPRESS callback
- WBC_GETFOCUS, WBC_HEADERSEL values changed
- EditBox was subclassed to notify keystrokes to main window
- New static function EditProc() in wb_control.c

------------------------------------------------------------------------------
Version 0.35 (pre-alpha) - build 119
Date: Jan 16, 2005
------------------------------------------------------------------------------

Main changes, relevant to PHP programmers

- Tab control: tab selection goes now through WBC_HEADERSEL notification message in $lparam1; Tab number is $lparam2. Thus WBC_HEADERSEL must be included as lparam in wb_create_window(). CAUTION: THIS CHANGE MAY BREAK EXISTING CODE.
- ListView: header selection goes now through WBC_HEADERSEL notification message in $lparam1; Header number is $lparam2. Thus WBC_HEADERSEL must be included as lparam in wb_create_window(). CAUTION: THIS CHANGE MAY BREAK EXISTING CODE.
- No need to include notification messages as lparam when creating a window
- New function: wb_draw_image() (Issue #138)
- New function: wb_draw_text()
- New constant: WBC_HEADERSEL
- Fixed inconsistency in WBC_DBLCLICK: was being tested in style instead of lparam (thanks Alexandre)
- Fixed function wb_set_style(), was broken
- wb_set_style(): changed parameter to set/unset style (bool)
- All styles that can be set with wb_set_style() can now be set on wb_create_control() too (but not vice-versa yet)
- Message WBC_HEADERSEL is sent to callback function when a ListView header is clicked
- Arrow keys will change pages of a tab control with the keyboard focus (Part of item #353)
- Solved bug #399, "Menu access keys won't work in some apps"
- Solved issue #299, "Optional dotted lines in treeviews", using wb_set_style()
- Solved serious leakage in some wb_draw* functions
- Other changes

Changes in documentation

- wb_create_window() doc
- Changed wb_set_style() doc, wb_set_style() is not considered a low-level function anymore
- Help: Callback functions and window handlers, windows messages - more info
- Solved: The following functions aren't listed at the manual: wb_draw_line / wb_draw_rect
- Solved: Function wb_get_function_address appears with another name at the manual (thanks to Alexandre)
- New default position of help window (CHM)
- Some items previously solved marked as "solved" in To Do (#375)
- Other changes

Changes in applications

- New OOi by Alexandre (see respective doc)
- New DB interface by Hans (see respective doc)
- New SA (SQLAdmin) app by Hans (see respective doc)
- /Code/tests directory renamed to /Code/Samples
- Code samples from /Code/Hello, /Code/minimal, /Code/calc, /Code/TTFReader moved to /Code/Samples
- Removed some PHPW sample files, added some, renamed some
- Changes and fixes in listview_sort.phpw, dblclick.phpw, ttfreader.phpw, tabcontrol.phpw and others
- Two new small bitmaps (edit, note) (no big deal)
- Changed default Setup directory to C:\WINBINDER

Changes in C code

- Tab controls have style WS_TABSTOP as before with no visible problems. This restores the right/left arrow functionality, but does not yet give the focus to other controls with tab/alt+tab
- New C funtions: wbDrawBitmap(), wbGetFont(), wbDrawText()
- Assignments to hCurrentDlg in the application window were removed in wb_window.c. This helps to solve part of bug #399
- SetFocus() call was removed in TabPageProc: This solves bug #399
- A call to wbSetStyle() was added to wbCreateControl(), replaces some existing code
- Removed wbGetWindowStyle(), wbSetWindowStyle() (low-level functions)
- Added parameter bSet to wbSetStyle()
- Removed wbIsWBObj() call in DrawEnd(): this solves leakage in wb_draw* functions
- Other changes

------------------------------------------------------------------------------
Version 0.34 (pre-alpha) - build 117
Date: Jan 5, 2005
------------------------------------------------------------------------------

Main changes, relevant to PHP programmers

- Created low-level functions wb_load_library(), wb_get_function_address(), wb_call_function(), wb_release_library() to access foreign functions directly from WinBinder. This partially implements item #298, "Provide additional low-level accesses to the API"
- New DLL for PHP 5.0.3, compiled with module API = 20041030
- New DLL for PHP 4.3.10
- Solved bug #365, "Main windows do not center properly in Windows 98"
- Solved bug #366, "Dialog boxes must be centered on their parents"
- wb_windows.inc.php(), _make_file_filter(): removed $ext parameter. Calls to this function were causing a warning if allow_call_time_pass_reference was set to FALSE in php.ini. Thanks to Aurelian for pointing that out.
- Database functions: Dropped db_fetch_object(), use db_fetch_array() instead - Hans
- Database functions: Added db_close_database()
- wb_get_system_info(): "apppath" argument renamed to "pgmpath"
- wb_get_system_info() now displays "unrecognized parameter" if the string is invalid
- wb_get_system_info("instance") returns a valid value now
- In parse_ini(): added new parameter, 'changecase' (default is FALSE)

Changes in applications / documentation

- New setup application in Tools\inno_setup\wb.iss
- New Welcome application
- Several changes in the make_release application: builds the Setup automatically, checks version and date, new accelerator key, among other changes
- Changes to Readme file (because of the Setup)
- Mini-tutorial: how to use foreign functions (see also foreign_function.phpw)
- Mini-tutorial: how to create a WB app (see also minwin.phpw)
- Made it clearer that aux & db functions are not part of the core
- Spinners help
- More examples for wb_exec(), reviewed function doc
- Better documentation for wb_get_system_info()
- Created a new "notes" page -- a scratchpad for things not "officially" documented
- Some overviews reviewed and enhanced
- New example: images.phpw, shows how to create images on the fly, adapted from Alexandre's code
- Some changes to tests.phpw
- Minor changes in todo.phpw
- Created new sample scripts: dll_functions.phpw, foreign_function.phpw, minwin.phpw
- Copyright note changed from "2004" to "2004-2005" everywhere
- Removed the tools/beyond_compare folder

Changes in C code

- Changes in wb_window.c: wbCreateWindow() now processes WBC_CENTER explicitly; WBC_CENTER value changed to a smaller value because CREATESTRUCT is truncated to small values in Windows 98 (but not in 2K or XP -- go figure); ((LPCREATESTRUCT)lParam)->y was missing in various window handlers wb_window.c. These were the causes of bug #365.
- wb_window.c: window handlers now use hwndParent. This solves bug #366
- New C functions in wb_lowlevel.c: wbLoadLibrary(), wbGetLibraryFunction(), wbReleaseLibrary()
- Constants STRUCT_WBOBJ, STRUCT_WBOBJ_SIZE removed from library. They still exist with new names at dll_functions.phpw
- wbCenterWindow() rewritten and made static, added a meaningful return value (DWORD)
- Added sizeof(OSVERSIONINFO) to GetUserObjects(); this corrects calls to wb_get_system_info("userobjects") which had to be preceded by wb_get_system_info("gdiobjects")
- wbInit(): correct value assigned to hAppInstance
- Commented-out functions (still in PHP) added to phpwb_export.c
- Several other changes

------------------------------------------------------------------------------
Version 0.33 (pre-alpha) - build 114
Date: Dec 22, 2004
------------------------------------------------------------------------------

- Added new DLL for PHP 5.0.3. This solves "module API=20040412" vs. "module API=20041030" issue
- Added PHP5.0.2 directory for previous PHP versions (5.0.0 to 5.0.2)
- Added new DLL for PHP 4.3.10 (backwards compatible)

------------------------------------------------------------------------------
Version 0.33 (pre-alpha) - build 113
Date: Dec 9, 2004
------------------------------------------------------------------------------

Main changes, relevant to PHP programmers

- Created functions wb_create_font(), wb_set_font()
- Callback functions can handle left/middle/right mouse buttons, mouse movement, double-click, down/up mouse buttons, Ctrl/Shift/Alt key modifiers
- New functions wb_draw_line() and wb_draw_rect()
- wb_get pixel() and wb_set_pixel() can accept WinBinder objects in addition to DCs, bitmaps and window handles
- StatusBar width and position are automatically updated when main window is resized
- FTA_ (font attributes) constants
- New flags: WBC_CONTROL, WBC_SHIFT, WBC_ALT, WBC_LBUTTON, WBC_MBUTTON, WBC_RBUTTON, WBC_MOUSEDOWN, WBC_MOUSEUP, WBC_MOUSEMOVE
- Changed color constants to RGB values (Windows standard) and added bgr* color constants (GD standard)
- Callback functions can now receive optional second general-purpose parameter (lparam2)
- Solved a random bug in Windows 98 where WinBinder might identify a button as a menu item

Changes in applications / documentation

- Due to the fix in wb_get_text() (build 108), the moveup/movedown buttons in ToDo were not working anymore. Fixed by Hans
- OOi now converts non-OOi objects into objects -- by Alexandre (see example)
- New example using the OO interface: an amazing Minesweeper clone by Alexandre (code/ooi_samples/ooi_winmine.phpw)
- New example of using a treeview in code/tests/treeview.phpw
- Some corrections in db_common.inc.php plus formatted function documentation, thanks to Hans

Changes in documentation

- Some functions were missing in alphabetical list
- New functions in manual, including db_get_data()
- Several fixes in manual
- In "to do" list: overall review; most priority levels changed; several items / bugs already corrected were removed from list

Changes in C code

- Removed not-used FSM_ flags from wb.c
- Removed some not-used font flags from wb.h
- Included hFont field in the FONT structure
- Created phpwb_font.c
- Created wb_font.c() with C font functions wbCreateFont(), wbSetControlFont(), wbDestroyFonts()
- New C functions wbDrawLine() and wbDrawRect()
- wbError() now receives function name (__func__) as parameter
- wbMalloc() renamed to wbMalloc()
- wbFree() was the only function that returned void, now returns BOOL
- Internal functions moved from wb.h to C modules, referred by keywords 'extern' now
- WinPath() renamed to MakeWinPath()
- Created second all-purpose parameter (lParam2) in wbCallUserFunction()
- In wbCreateWindow(), UINT changed to int, added id parameter
- Dropped function SetStatusBarId()
- Created new function SetStatusBarHandle()
- wbIsWBObj() now can optionally hide error messages
- wbIsWBObj crashed if parameter was a GDI handle. Fixed.
- wbSetEnabled(), wbGetEnabled(): added additional check for Menu class. This solves a random bug (in Windows 98 only) where WinBinder erroneously identified a button as a menu item
- Several other minor fixes

------------------------------------------------------------------------------
Version 0.32 (pre-alpha) - build 108
Date: Dec 2, 2004
------------------------------------------------------------------------------

Functional changes, relevant to PHP programmers

- Created new class LayoutDialog, a dialog box that behaves like a visual form editor
- New WinBinder functions: wb_get_position(), wb_get_size(), wb_get_id(), wb_get_item_list()
- Frames (group boxes) can also act as containers and pass messages along from their children much in the same way that the tab controls do. Thanks to Dan for the suggestion.
- Independent radio button groups are now possible in the same window. Thanks to Alexandre for pointing it out.
- List views: parameters item and subitem were not working in function wb_get_text(). Fixed.
- List views: wb_set_item() was not changing the value of an existing item under certain conditions. wb_get_text() fixed it.
- RTF edit controls were not appearing in Windows 98. Fixed.
- Added parameter respath to parse_rc()
- db_get_data() has a new parameter, 'orderby'
- Updated and restored the object-oriented interface (OOi, ex-OOP) folder, which is now under code/inc. File ooi.php is now called ooi.inc.php. Be sure to check desc.txt and the new set of code samples (at code/OOi_samples). Thanks again to Alexandre for his nice work.
- Other minor fixes

Changes in applications

- Started layout_editor, a proof-of-concept application that uses the new class LayoutDialog to create a simple form editor. Please be sure to read le_main.phpw.
- Make_release: a completely new and improved interface, several new flags for individual operations, remembers last settings and window position, much improved ToDo list, other changes
- Better HTML and text formatting in ToDo, solved filter items
- Created todo import/export.inc.php, shared with make_release
- ToDo: the Move up/Move down arrows are working -- thanks to Hans
- ToDo: removed LBS_SORT flag from list boxes in dialogs so they won't get improperly sorted anymore
- Several changes in the tests.phpw application

Changes in documentation, web site

- More corrections in the Readme file
- Improved ToDo list in the web site
- New mailing lists page, hopefully will make subscription simpler
- Added quite a few new To Dos, reviewed many others
- Additions and fixes in manual

Other changes, relevant to C programmers

- New C functions: wbGetWindowPosition(), wbGetWindowSize(), wbGetControlList()
- Moved call to LoadLibrary("RICHED32.DLL") to wbInit(), calls RICHED20.DLL first. This solves bug #358
- wb_window.c: ModelessWndProc() separated from ModalWndProc()
- wb_window.c: new functions LayoutWndProc() and CtrlProc() to handle layout dialogs
- Created WBC_GROUP flag (same as Windows' WS_GROUP) to create multiple RadioButton groups
- Former static function CenterWindow() made public and renamed to wbCenterWindow()
- Probably useless code removed from wbSetEnabled() in wb_control.c

------------------------------------------------------------------------------
Version 0.31 (pre-alpha) - build 104
Date: Nov 23, 2004
------------------------------------------------------------------------------

Main changes, relevant to PHP programmers

- Created new notification messages WBC_GETFOCUS and WBC_DEFAULT (default command message)
- The callback may verify if a control has the focus by checking WBC_GETFOCUS in $lparam
- wb_create_window() supports style WBC_NOTIFY, which tells to use lparam as a message filter. This means that if you are using WBC_DBLCLICK you must include WM_NOTIFY and WBC_DBLCLICK as style and lparam, respectively.
- wb_set_style() has a new (optional) parameter to accomodate Windows extended styles
- The flag LVS_ALIGNLEFT means, in WinBinder, that a ListView has checkboxes (WBC_CHECKBOXES), so there is no need to use wb_set_style() anymore
- Fixed bug introduced in the previous release: typing ESC when the focus was inside a multiline edit box destroyed the respective tab page and all controls
- Fixed bug #209: some controls over tab pages were displaying wrong background colors in Windows XP. This implementation was successfully tested under Win98, Win2K, WinXP with visual styles, WinXP with no visual styles, WinXP with default style. (Exception: tab control over a tab control)
- Fixed bug #208, where wb_set_position() was unable to properly center a window with a call like wb_set_position($window, WBC_CENTER, WBC_CENTER)
- Fixed bug #225, so wb_set_value() now sets sliders value and range correctly (moved from 'spinners' to 'sliders')
- The WS_EX_STATICEDGE (extended Windows style) corresponds to the new WBC_BORDER WinBinder style (not Windows' WS_BORDER) and can be used in most control classes
- Style WBC_BORDER is for sunken Frames, but can be used in other controls too
- Sliders tick marks are now optional, default is not to have them
- Left-aligned labels can wrap lines or not (default is to wrap them) using Windows style SS_LEFTNOWORDWRAP, which translates to !WBC_LINES
- Renamed variable WBC_MULTILINE to WBC_LINES so it can be used by sliders and listviews in addition to edit boxes and labels
- Item #166: ListViews can have optional grid lines (style WBC_LINES), default is no grid lines
- Item #321: wb_get_address() now processes longs, booleans, and doubles in addition to strings
- Fixed bug #142: Rewrote wb_poke() and wb_get_address() to correct several flaws
- It is not necessary to use a line like $ctrl = @wb_get_control($window, $id) because $ctrl is already passed to the callback functions. This was fixed in the examples.

Applications

- ToDo application can generate text and HTML listings in addition to CSV files
- ToDo: Some enhancements to the Edit Item dialog
- Make_release: all e-mails are removed from PHPW source code (thanks to Alexandre for pointing this out)
- Make_release copies license.txt and creates an HTML version of the To Do list for the web site
- Make_release: Other changes and fixes
- Created new tab for easier low-level function tests in tests.phpw
- Tests: new test code in test_lowlevel.php
- Created test_struct.phpw for passing C structures to PHP
- TTFReader: included keyboard accelerators, double-click in font dialog and other minor changes
- Digiclock now closes itself, other minor changes
- Tab_80: more controls added for testing
- Setup scripts moved from the 'ttfreader' folder to the new 'tools/inno_setup'
- Temporarily removed the OOP folder because it is broken. If you need it, look for the previous release.

Changes in documentation

- Several changes and corrections to the Readme file. Thanks to Dinah for pointing them out.
- Corrections to documentation
- New code samples in manual

Details and other changes, relevant to C programmers

- parse_rc() modified to use lparam and pass it to wb_create_window()
- wbSetStyle() function temporarily disabled (will support WinBinder styles)
- Created new function wbSetWindowStyle() in wb_lowlevel.c to support Windows styles, separated from wbSetStyle()
- In DefaultWBProc(): cleaned out processing for most controls in WM_COMMAND, providing additional filtering and focus notification
- Changed WBC_DBLCLICK value to 0x02
- Added BS_NOTIFY style to button controls for focus notification
- More options if id is zero in wbCallUserFunction(): pctrl->id and pwboParent->id
- The value of WBC_CENTER was changed from 0x10 to 0x10000000 to avoid problems with width=16 or height=16
- CenterWindow() now uses the hwndParent parameter
- wbSetWindowPosition() now uses pwboParent and checks against NULL window and NULL parent
- In wbCreateWindow(), xPos and yPos are now UINT
- Inserted a break in wbGetControl() to exit the loop that searches for a control inside a tab
- To solve the tab color problem: wbInit() in wb_winsys.c creates the background color and brush; wbEnd() destroys the brush; wbInit() also detects the OS version; in wb_window.c, RegisterClasses() changes the TAB_PAGE_CLASS to background brush, DefaultWBProc() processes WM_CTLCOLORSTATIC and WM_CTLCOLORBTN, and other changes
- Used the TBS_NOTICKS style to remove the tick marks from trackbars
- In wb_window.c, TabPageProc(): intercepted WM_CLOSE so that an ESC from inside a multiline edit box does not close the tab page anymore
- Item #259, "Use constants for resources" had already been done

------------------------------------------------------------------------------
Version 0.30 (pre-alpha) - build 101
Date: Nov 15, 2004
------------------------------------------------------------------------------

Main changes, relevant to PHP programmers

- Columns in list views can be sorted when header is clicked. Numbers are sorted numerically, other strings are sorted by character order according to locale.
- System timers implemented and processed via existing PHP callback function
- Double-clicks implemented in list views, treeviews and list boxes via existing PHP callback function
- Keyboard accelerators (tab, shift+tab, etc.) work properly in tab control pages
- Added Zend function wb_sort() to sort list views (ascending or descending)
- In a tab control: maximum number of tabs is 16, max number of controls is 512
- wb_set_selected() can set the current tab for a tab control
- wb_get_selected() returns the currently selected tab from a tab control (item #375)
- Created Zend functions wb_create_timer() and wb_destroy_timer()
- Added constant WBC_SORT
- Added flag WBC_DBLCLICK for detecting double-clicks in list views, treeviews and list boxes
- Now it is possible to create disabled controls directly from the resource script
- New flags WBC_ENABLED and WBC_DISABLED
- Removed classes Picture and GroupBox: merged with class Frame
- Added flag WBC_IMAGE to generate frames with bitmaps or icons
- 'Sunken' text allowed (use WBC_IMAGE flag)
- Combo boxes and list boxes can be sorted: use flag WBC_SORT
- Fixed bug #188: some paint problems in Frame class (static controls do not repaint themselves)
- Controls on tabs can now be made visible/invisible programmatically
- Added control handle and lParam to the user callback function (now it's official)
- Labels now interprtet the '&' character as a prefix for a keyboard accelerator. Use '&&' to display an ampersand.
- More accurate regular expression for LCC-Win32 make (see readme_lccwin32.txt)
- Fixed bug #80: Tabs did not paint themselves after sliders / scroll bars were moved
- Fixed bug #88: Two or more bitmapped buttons could not appear at the same time
- Fixed bug #113: Tab page designs are output as at design time, i.e. without vertical shift
- Fixed bug #331: Hovering over a slider (trackbar) cursor generated callback messages
- Fixed bug #341: A NULL value could not be assigned to an edit box and other controls

Applications

- In the ToDo project: A double-click in the list view now calls the Edit Item dialog
- The make_release application adds release notes to package.xml
- Added sample application to folder 'minimal': digiclock.phpw
- Added application to test for bug #80 and other tab things: Tab_80.c
- New code in test_lowlevel.php (formerly test_hacking.php)

Changes in documentation

- Added release notes (file release_notes.txt)
- New functions, enhancements and corrections in manual

Other changes, relevant to C programmers

- Tab controls now have container pages which contain the controls. This solves bugs #80 and #113. It also allows controls to be programmatically visible/invisible, something that was not possible before. Two important points for existing tab page designs: 1) Make sure your control IDs are unique; 2) Shift all existing controls up (only those inside tabs, of course) about 15 dialog units or 24 pixels.
- Created new class TAB_PAGE_CLASS ("wbTabPage") for, er, tab pages
- Created TabPageProc() to process tab pages
- Changed structure TABDATA to accomodate the pages
- TabPageProc() monitors WM_SHOWWINDOW to set hCurrentDlg so dialog special keys (tab, shift_tab, etc.) and behaviors are processed adequately by IsDialogMessage() in the main application loop
- wbMainLoop: TranslateAccelerator() moved to before IsDialogMessage() to avoid accelerator problems on edit controls and others
- Removed the SS_NOPREFIX style from labels
- wbGetControl() changed to find a child control from tab pages
- New function wbSelectTab() replaces code from DefaultWBProc(); called by wb_set_selected()
- Tab controls pass the index of the currently selected tab to the callback as lparam
- Header file wb_internal.h merged with wb.h
- Created C function wbtemp_select_tab()
- New functions UpdateLVlParams(), CompareLVItems*(), IsDecimalNumber()
- Changed 'class' to 'wbclass' in STRUCT_WBOBJ because 'class' is a reserved PHP word
- wbCallUserFunction() has a new parameter: pctrl
- Added control handle and lParam to Zend function call_user_function_ex() in wbCallUserFunction (now it's official)
- Functions in wb_control_tab.c are checking against invalid pwbo's
- Removed tab stops from group boxes and gauges
- Control flag WS_DISABLED is being processed in wb_resources.inc.php
- Some constants renamed
- Lots of other minor changes and fixes as usual

------------------------------------------------------------------------------
Version 0.28 (pre-alpha) - build 095
Date: Nov 5, 2004
------------------------------------------------------------------------------

Main changes, relevant to PHP programmers

- Minimize to taskbar status area, new window style flag is WBC_COLLAPSED (e.g. tests.phpw)
- Edit boxes with numeric option (digits 0-9 only), new control style flag is WBC_NUMBER
- Edit boxes for passwords, new control style flag is WBC_MASKED
- Closing modeless dialogs do not terminate applications anymore
- Created functions wb_get_registry_key() and wb_set_registry_key()
- Removed function wb_read_ini_key(), replaced by wb_get_registry_key()
- wb_play_sound(WBC_BEEP) beeps computer speaker

Changes in documentation

- Changed "hacking" to "low-level" everywhere in the code and manual
- More enhancements and several fixes to manual
- Removed "resurrected" reference to wb_set_accel_table in manual
- Revised many To Do items and added some new ones
- To Do's from C source files moved to To Do database

Other changes, relevant to C programmers

- wbReadRegistryKey(): changed names of variables
- wbReadRegistryKey(): key is now a string parameter: "HKCU", "HKLM", etc.
- Deleted constants HKEY_* from phpwb_export.c
- More tests in tests.phpw: various edit boxes including RTF
- Some improvements to make_release project to avoid repeated pages in CHM (help file)
- Added default value to wb_play_sound()
- Low-level functions moved from phpwb_system.c to phpwb_lowlevel.c (and wb_lowlevel.c)
- Other small changes as usual

------------------------------------------------------------------------------
Version 0.27 (pre-alpha) - build 093
Date: Nov 1, 2004
------------------------------------------------------------------------------

Main changes

- Several enhancements to manual, including new overviews
- Several corrections and additions to the manual TOC
- Fixed Esc and Enter not closing dialog boxes
- Accelerators work independently from the current focus
- Accelerators accept many more string combinations and lowercase "f" for F-keys
- Menu shortcuts like Alt+F are working
- ToDo app: Filter uses combo boxes for easier filtering
- wb_create_items() can be used also to create child controls in tab controls

Minor changes

- wbMakeAccelFromString() processes many more special keys, lowercase "f" for F-keys and other fixes
- Obsolete function wb_set_accel_table() removed from manual
- Some small changes to Tests.phpw
- Fixed wbtemp_set_listview_item_checked() and wbSetListViewItemChecked(), were not working
- wbtemp_set_accel_table() and wbSetAccelerators() have a new parameter, pwbo
- hAccelTable made static

------------------------------------------------------------------------------
Version 0.26 (pre-alpha) - build 092
Date: Oct 28, 2004
------------------------------------------------------------------------------

Main changes

- New PHP-based database wrapper functions (listed in the CHM, but not documented yet)
- New application that displays the task database for WinBinder
- New enhanced object-oriented interface for PHP 5 with examples, by Alexandre
- New OO version of the Hello World application
- Two new PHP functions for INI files: generate_ini() and parse_ini()
- Treeview.bmp has more images and some images were rearranged
- Many enhancements and fixes to treeviews (see details below)

Fixes and other changes

- Quick (and buggy) hack to make modeless dialogs work
- oo_interface.php moved to code/inc
- wb_set_style() now applies Windows styles to ListViews
- wb_set_selected() now works with ListBoxes and ComboBoxes
- Fix for wb_set_selected() when $selitems is NULL
- wb_create_items() caption now accepts an array of arrays for TreeViews as in ListViews
- Function wb_set_text() now has optional parameter 'append'
- Treeview functions now validate pwbo
- wb_delete_items(), wbClearItems() now clear treeview data
- wb_set_text() now can create items in a treeview easily
- wbAddItemToTree: nLevel is now absolute, not relative, for much easier data entry
- In wbtemp_create_treeview_item(): switched parameters, 'level' is optional, level is absolute
- wb_delete_items() now works on TreeViews too
- wb_control_treeview.c: all functions checked against NULL handles
- wb_set_selected() now is similar to wb_set_value() in all classes except Menu and ListView
- wb_get_selected() now returns a LONG instead of a BOOL for all classes except ListView
- wb_get_selected() now is the same as wb_get_value() for all classes except ListView and TabControl
- wbGetSelected() prototype now returns a DWORD
- wbGetItemCount() prototype now returns a DWORD
- wbGetSelected now calls wbGetValue() for all classes except TabControl
- wb_get_item_count() now supports ListBoxes and ComboBoxes
- Many other small changes as usual

------------------------------------------------------------------------------
Version 0.25 (pre-alpha) - build 086
Date: Oct 14, 2004
------------------------------------------------------------------------------

Main changes

- Much better and much more complete WinBinder manual, now with Index and Keyword Search
- New mailing list: winbinder-rceforge.net
- New: support for keyboard accelerators, may be created inside a menu or separately using wb_create_control($mainwin, Accel, array(...))
- New proposal to an OO interface for PHP 5, many thanks to Alexandre
- PECL and Sourceforge releases are now identical; Package uploads simplified: created package "Minimal PHP"; WinBinder installation is different, but fairly easy
- New php-win.exe for PHP 4 (included in the minimal PHP release) corrects "crash on path with spaces" bug (thanks Simon from PHP-GTK-DEV)

Fixes and other changes

- Added example of WinBinder script with no main Windows loop
- HTML Help moved to Tools folder
- Updated make_release.phpw
- Much more complete WinBinder documentation in both HTML and CHM
- FloatingDialog class removed (replaced by ModelessDialog)
- Function wb_play_system_sound() renamed to wb_play_sound()
- Function wb_get_image_size() now returns an array instead of a DWORD
- Merged function wb_clear_items() and function wb_delete_item() into a single function, wb_delete_items()
- Removed constants "Splitter" (not an object, at least for now) and "MultiEditBox"
- Fixed wb_message_box() crashes
- EditBox and RTFEditBox classes now call the callback function only when an EN_CHANGE notification message is sent
- Added lparam field to struct WBITEM
- Added new information to readme_lcc
- New function: wbSetAccelerators()
- New function: wbMakeAccelFromString()
- Various changes to wbMainLoop()
- wb_peek() and wb_poke() now refuse negative lengths
- set_pixel() now returns a BOOL, not a LONG
- Created constant WBC_BEEP (although MessageBeep() does not seem to be working)
- wb_message_box() rewritten
- wb_exec() was rewritten and has a new parameter for visibility (not tested and undocumented)
- In wb_set_value(), values are not optional anymore
- wb_set_handler() moved to phpwb_window.c

------------------------------------------------------------------------------
Version 0.24 (pre-alpha) - build 082
Date: Oct 5, 2004
------------------------------------------------------------------------------

- First (very incomplete!) version of the WinBinder manual, in CHM and HTML
- TTFReader now is a standalone demo
- wb_read_key() renamed to wb_read_ini_key()
- New constant: ModelessDialog
- New PHP function: get_folder_files()
- New function: wb_get_system_info()
- Removed "inline" statements (not useful)
- winbinder.php: $path changed to $_mainpath, which is less likely to appear in scripts
- Some changes to tests.phpw and other example programs
- Many other small changes as usual

------------------------------------------------------------------------------
Version 0.23 (pre-alpha) - build 080
Date: Sep 27, 2004
------------------------------------------------------------------------------

Main changes (relevant to PHP programmers)

- Some changes to Readme file regarding installation.
- make_release.phpw now automatically builds and includes the package.xml file required for PECL.
- ZEND function wb_get_selected() now returns a variable-size array with selected items instead of a fixed-size array with '0's and '1's.
- ZEND function wb_get_value() now returns a variable-size array with selected items instead of a fixed-size array with '0's and '1's. (applies to ListViews only).
- Created ZEND function wb_read_key() for registry entries. Parameters may change in the future.
- ZEND function wbtemp_get_listview_item_text() was renamed to wbtemp_get_listview_text.
- In ZEND function wbtemp_get_listview_item_text(), now only the first parameter is required.
- ZEND function wbtemp_get_listview_item_text(), now can return the text of a single cell, the entire row, the entire column, or all cells, according to parameters.
- Included file package.xml required for PECL.
- Some new Zend constants (HKEY_* ) to improve readability in registry functions (may be removed in the future).

Fixes

- In parse_rc: Some bugs related to window sizes corrected.
- In wb_windows.inc.php: wb_create_items() did not accomodate one-element arrays correctly. Fixed.
- Corrected Several bugs related to ListViews.

Other changes (relevant to C programmers)

- In wb_windows.inc.php: wb_get_text() was simplified.
- In pwpwb_control_listview.c: wbtemp_get_listview_item_text() was rewritten: now has more options and treats them adequately.
- In file wb_control_listview.c: all occurences of nSubItem are now called nCol, for clarity.
- In wb_control_listview.c:
	- wbGetListViewItemText() was rewritten.
	- wbGetListViewCheckedItems() now fills up an array of variable size with selected items instead of an array with '0's and '1's.
	- wbGetListViewSelectedItems() now fills up an array of variable size with selected items instead of an array with '0's and '1's.
	- Added functions wbSetListViewColumnWidth() and wbSetListViewColumnWidths().
	- Added the pwidths parameter to wbGetListViewColumns() which fills up an array of integers with column  widths.
- wb_winsys.c: Created functions wbReadRegistryKey() and wbWriteRegistryKey() (the latter is not used yet).
- Function WinPath() moved from wb_sysdlg.c to wb_winsys.c and is now public to WinBinder.
- Other very minor changes in source code and documentation.

------------------------------------------------------------------------------
Version 0.22 (pre-alpha) - build 077
Date: Sep 21, 2004
------------------------------------------------------------------------------

Main changes (to PHP programmers)

- Added support to PHP5 as well as PHP4.
- VC.NET support added (Thanks to Rick Gibbed).
- New tool to automate creation of project snapshots and releases.
- Many changes to directory/file structure of project, many more files added.
- Several new docs including README files for the various compilers and tools.
- Created ZEND function wbDestroyBitmap() in phpwb_bitmap.c.
- Added parameter 'now' to wb_refresh_control().
- Added constant WBC_VERSION, which is the WinBinder version string.
- Renamed function wb_refresh_control() to wb_refresh().

Fixes

- PHP aborted whenever a ListView was clicked. Cause: wbFree() was calling efree() even if pointer was NULL. Fixed.
- Tooltips did not appear over toolbar buttons. Cause: tooltip windows were being tested for WinBinder objects in DefaultWBProc(). Fixed.
- In wb_windows.inc.php, wb_get_text() sometimes included a newline character. Cause: text length errors in wbtemp_get_text() at phpwb_control.c. Fixed.
- Picture controls were not drawing their background. Fixed.
- Spinner does not need to process WM_NOTIFY or WM_xSCROLL to call the callback function because its buddy already does it. Fixed.
- Scroll bars were not storing their positions. Cause: TabProc() was passing WM_*SCROLL messages. Fixed.
- ScrollBar events were not being processed. Fixed.
- Added default scroll bar behavior which was not implemented before.

Other changes

- Some changes to Readme file.
- Created function wb_destroy_image() in wb_bitmap.c.
- Created function wb_create_image() in wb_bitmap.c.
- Several non-ANSI C inline variables corrected all over the C code (Rick).
- Removed thousands separator from spinner buddies.
- Removed wb_compilers.h, moved its contents to wb.h.
- Many other minor changes, too numerous and insignificant to list here.

------------------------------------------------------------------------------
Version 0.20 (pre-alpha) - build 070
Date: Sep 16, 2004
------------------------------------------------------------------------------

- First public release (pre-alpha)
- Changed project name to WinBinder

------------------------------------------------------------------------------
Version 0.10 (pre-alpha) - build 053
Date: Aug 01, 2004
------------------------------------------------------------------------------

- Divided the code in two separate layers: Windows API and Zend binding

------------------------------------------------------------------------------
Version 0.00 - build 001
Date: May 13, 2004
------------------------------------------------------------------------------

- Started WinBinder
</pre>
</p>
				<p><br>
</p>
				<table width="100%" height="74">
					<tr>
						<td width="750" style="padding-top:10px; border-top-width:1; border-top-color:black; border-top-style:solid; border-bottom-style:none;" height="35">
							<p><span class="t_level3"><img src="pic/t_seealso.png" border="0" width="68" height="12" alt="See also"><br>
<br>
</span><a href="tutorials.php">Tutorials</a> | <a href="manual.php">WinBinder Manual</a> | <a href="todo.php">To Do list</a></p>
						</td>
					</tr>
					<tr>
						<td width="750" style="padding-top:5px; padding-bottom:5px;">
							<p> </p>
						</td>
					</tr>
				</table>
			</td>
		</tr>
						</table>
					</div>
				</td>
			</tr>
		</table>
	</body>
</html>