The native windows binding for php




 WINBINDER - The native Windows binding for PHP

 Copyright © 2004-2006 Hypervisual - see LICENSE.TXT for details
 Author: Rubem Pechansky (



Version 0.46.0 (alpha)
Date: Jun 5, 2006

This is the last maintenance release of the alpha branch. WinBinder now does fully support the following PHP versions: 4.3.10 up to 4.4.2 and 5.0.3 up to 5.1.4.


- Added the new Form Editor (FE) developed by Rubem and removed the old Layout Editor (LE)
- Improved PHP version checking in winbinder.php
- In PHP.INI for version 5.0 and 5.1: added E_STRICT flag to entry error_reporting
- Created PHP 5.1.1 path and project files for lcc-win32
- Added and optional extra parameter (usually called $lparam3) to window callback functions. This was done via wbCallUserFunction()
- On windows that have the WBC_RESIZE style, $lparam3 (in the callback function) now receives the size of the client area as a LONG. Usually a call to wb_get_size($window, true) would produce the same effect, but it\'s there anyway to take advantage of the new $lparam3
- Changes in make_release.phpw:
	. even less "USER PARAMETERS" to set up (7 strings only)
	. force DEBUG = False in wb_setup.pas
	. slight adjustments in screen layout
	. more adjustments to include PHP 5.1.1 files
	. checks if zip file was actually generated
	. other changes
- Small changes in welcome.phpw
- Examples/hyperlink.phpw: changed to show "finger" cursor and underlined text
- Examples/printer.phpw: added example how to print directly from a WinBinder enabled application
- Resources/wb.ico: added new WinBinder icon


- functions generate_ini and parse_ini do now handle double quotes correctly; fixed missing escaping of the '$' character
- function wb_set_selected now processes check boxes in menu items as it should; wb_get_text() now returns an array with the whole contents of a ListView control, as stated in the manual - did return null instead
- Solved memory leak that occurred on every function call: added some extra calls to efree() in function wbCallUserFunction() in module phpwb_wb_lib.c
- wb_control.c: Rectified wb_set_range() slider TBM_SETRANGEMAX action and other aspects of this function
- WBC_MOUSEMOVE messages were not being sent in certain situations
- InvisibleArea was subclassed to process and send WM_MOUSEMOVE messages to the callback
- wb_refresh() (and wbRefreshControl()):
	. completely rewrote the whole function
	. default value of parameter \'now\' was changed to TRUE
	. now it invalidates and redraws only a part of the screen or control when (still undocumented) xpos/ypos/width/height parameters are passed to it. Was buggy prior to this release.
	. probably a bit faster for most operations
	. if the wb_refresh() command is issued and the xpos/ypos/width/height are set, the window callback function (in PHP) receives a pointer to rectangle (About to change! Should be the area instead, and an array would be great.) as $lparam3. If wb_refresh() acts on the whole window, $lparam3 is zero.
	  Dimensions should be obtained from $lparam3
	  as follows:
	  $address = wb_peek($lparam3, 16);
	  $num = unpack(\'L4n\', $address);
	  $xpos = $num[\'n1\'];
	  $ypos = $num[\'n2\'];
	  $width = $num[\'n3\'] - $xpos;
	  $height = $num[\'n4\'] - $ypos;
- Changes in make_release.phpw:
	. now correctly handles/saves the new version no. structure
- Changes in setup:
	. many changes and corrections to wb_setup.iss (PHP 5.0 and 5.1, freeimage.dll, etc.)
	. separated the script section from wb.iss into wb_setup.pas. A separate file allows correct syntax highlighting in a code editor and allows testing script changes without leaving ISTool (Inno Setup UI)
	. other changes


- Updated the PHP 4 engine and the respective extensions to 4.4.2
- Removed the redundant PHP binaries and accompanying files (not the extensions) for 5.0.5 and 5.1.2
- Uploaded new "minimal" PHP 4.4.2, 5.0.5 and 5.1.2 versions as well as the respective extensions to SF

Version 0.44 (alpha) - build 171
Date: Dec 14, 2005


- Included separate builds for PHP 5.0 and PHP 5.1
- Fixed build for PHP 5.1.1 which was not working
- wb_call_function() crashed since build 165. Fixed.
- Spinners now need the WBC_GROUP style to perform auto buddy operations. You will have to include this style when calliin wb_create_control().
- wb_refresh(): added optional parameters width, height (not official yet -- parameter order may change in the future)
- wb_draw_image(): added parameters xoffset, int yoffset (not official yet -- parameter order may change in the future)
- wb_set_range() can now set 64-bit values for Gauges, Spinners and Sliders.


- tabcontrol.phpw now shows notifications, show more data in statusbar
- Some more tests added to images.phpw
- Added missing call to wb_destroy_timer() and other changes in welcome.phpw
- More changes and fixes to make_release.phpw and related /tools/*/*.txt files
- Removed ZIPPER_FLAT option from make_release
- Replaced WinZip Command Line Add-on (shareware) with info-zip (open source) for automated distro building


- Created cwb_wb_lib.c for binding with C language. Proof-of-concept is in binaries\c\hello.exe
- Changes in phpwb_export.c to include data for phpinfo() (thanks to Hans). This change also implied a reference to info.h so that the project files for lcc-win32 (*.prj) and makefiles were changed. The info.h files were added to the "tweaked headers" and setup package as well.
- All file names made lowercase for better compatibility with *nix FTP servers. Exceptions are the various Makefiles.
- Created folder binaries/php5.1 and updated scripts accordingly: make_release.phpw, ws.iss (Inno Setup), winbinder_php5.prj (lcc-win32) and Makefile (lcc-win32)
- Renamed folder binaries/php5 to binaries/php50
- Created the tools/info-zip directory, added cmd.php script to it to simplify make_release
- Added extensions php_pdo.dll and php_sqlite.dll to php.ini in version 5.1.1 (not 5.0.5, though)
- The reason wb_call_function() was crashing was because of DWORDLONGs (introduced in build 165). Went back to DWORDs and the crashes went away
- wbSetRange() now uses LONGs instead of DWORDs for consistency
- wbRefreshControl(): added parameters nWidth, nHeight
- wbDrawBitmap(): added parameters xOffset, int yOffset
- Several other minor fixes and adjustments

Version 0.43 (alpha) - build 165
Date: Nov 28, 2005

- Compiled for PHP version 5.1.0
- WinBinder now uses the MSVC compiler. See tools\msvc\readme_msvc.txt for instructions on how to compile WinBinder with a Microsoft compiler.
- Adjustments to make_release.phpw and templates.xml as required by PEAR 1.4, it now produces 2 XML files (thanks Stefano)
- New test application registry.phpw
- In wb_set_registry_key(), floats are converted to strings for storage. To retrieve a float, cast the result using (float)wb_set_registry_key(). See registry.phpw for an example.
- wb_get_text(): fixed crash with empty combo boxes introduced in build 0.43.164 (thanks Hans), prevented other problems as well
- wb_call_function() array now uses DWORDLONGs to prevent compiler warnings
- wbGetValue() now calls wbGetTreeViewItemValue() which was not being called by any other function
- Several .c and .h files: fixed some non-standard variable declarations, clarifying parentheses, missing headers, some casts and other minor adjustments to keep the MS compiler happy

Version 0.43 (alpha) - build 164
Date: Nov 21, 2005

- Added page to setup wizard to select a server for download when installing WinBinder
- Updated PHP versions to 4.4.1, 5.0.5
- Updated SQLite DLL
- Implemented extra argument (param) in wb_load_image() and used param in wb_set_image() to force a small or large icon (thanks EK). See images.phpw for an example.
- welcome.phpw: PHP version check (thanks Stefano), more icons, more menu items, more buttons, a new loop to generate buttons, Always on Top deactivated after 4 sec, fixed internal version verification, minor changes
- Removed double FreeImage.dll in setup, many more revisions and tweaks in installer
- make_release.phpw: more fixes, changes in tools/winzip/release_zipme*.txt
- parse_rc() in fixed a preg_replace() call because it stopped working in PHP 4.4.1 / PHP 5.0.5 (thanks Hans)
- New resources: menu_doc.bmp, viewer.ico
- Missing license files included in distribution

Version 0.43 (alpha) - build 163
Date: Nov 20, 2005

- Several fixes to PHP 5 files in Setup: changed download server for PHP 5 libraries, added missing Unzip utility, added FreeImage.dll to PHP 5 install
- Many other changes and fixes to setup script
- welcome.phpw was not opening the help file and text files. Fixed.
- welcome.phpw window was made Always on Top
- make_release.phpw: additional / better version checking, forces compression of setup file, several fixes and changes
- Layout editor: fixed cosmetic drawing problem in buttons and main window
- Other minor fixes

Version 0.43 (alpha) - build 162
Date: Nov 18, 2005


- New, better, clearer, more sensible folder structure (thanks Techtonik, Stefano) with five main subdirectories: binaries, csource, docs, phpcode, tools. This implies you may have to change one or two lines in your own scripts, typically "../include/winbinder.php"
- Setup completely revised, now includes php4ts.dll, php_sqlite.dll and FreeImage.dll for faster and easier installations, and HTML sources for manual. PHP 5 is also available as an optional download. Please inform about any installation problems.
- wb_get_size() now can also return the size (in pixels) of a text. The font is passed in param. See manual for more information
- wb_sys_dlg_save() now allows a default extension to be added to file names
- New function: wb_draw_ellipse(), analogous to wb_draw_rect()
- Included parameter for dashed line styles in wb_draw_line(), wb_draw_rect() and in the new function wb_draw_ellipse(). See manual and lines_and_shapes.phpw for line style examples.
- Implemented non-read-only combo boxes. A normal (read-only) combo box now needs to include the WBC_READONLY flag. In all example scripts the combo boxes were set to WBC_READONLY to maintain previous behavior. Function parse_rc() (in now sets all default (non-editable) combos to WBC_READONLY. See combo_list_boxes.phpw for an example.
- Functions wb_get_text(), wb_get_selected(), wb_get_value() were extended to support non-read-only combo boxes
- Functions generate_ini(), parse_ini() adjusted to process empty strings correctly
- Removed resizable attribute from modeless dialogs (class ModelessDialog)
- Treeviews now keep the selected item highlighted (usually in gray) when it loses focus (TVS_SHOWSELALWAYS style)
- wb_set_selected() now allows selection of root node in treeviews by passing zero as the 'items' parameter


- Modeless dialogs were resizable. Fixed.
- Fixed possible crash in wb_call_function() when calling functions without parameters
- Fixed wrong parameter (nIndex) being passed in wb_set_image(). You may have to change your calls to this function. Check if you need to make any changes in the function documentation.
- Text retrieved from combos and list boxes don't get right-trimmed anymore.


- Verified scripts for changes in wb_set_image()
- If the DLL is not found in, and, a warning message box appears
- ToDo: commented out database editing functions in (categories) which are not working properly. ToDo items in the main window are working normally.
- Layout editor prototype now can select/unselect (just one) control, takes mouse cursor position into account, scale control horizontally / vertically / diagonally (only right and bottom handles implemented), has a warning saying it is only a proof of concept
- Most PHPW scripts now use a PATH_SCRIPT constant and include paths relative to themselves so they execute no matter where they are called from
- Many new features, changes and fixes in scripts, specially make_release.phpw, listview.phpw, dib.phpw, db_test.phpw, manytests.phpw, welcome.phpw, combo_list_boxes.phpw and others
- Updated database library to reflect changes in CVS
- Created example move_control.phpw
- Scripts that use the FreeImage library now include FIPL license note
- "?>" was missing in several .phpw files. Fixed.
- In treeview.phpw: swap items


- Many revisions in Readme.txt: Included license information, extra DLL information and other changes
- Revisions in other readme files and text files because of the new folder structure
- Included License-fi.txt (FIPL) for FreeImage library


- Tweaked code for most recent lcc-win32 builds: In win95nt.h, commented-out typedef uint. In wb_control_html.c, changed some VTable declarations (added "void *") to avoid compiler warnings. New function pointer declarations in wb_winsys.c.In wb.h, included .
- Added parameter lpstrDefExt to wbSysDlgSave(), defext to wbtemp_sys_dlg_save()
- h_exec: better examples of INI files
- Updated manual.hhp (HTML help project) to reflect new folder structure
- wbGetTextSize() function was moved to wb_draw.c
- wbSetTreeViewItemSelected() now allows selection of root node
- Changed C and PHP source code headers to avoid spam (thanks Techtonik)
- Made lcc-win32 project files (winbinder_php4.prj, winbinder_php5.prj, h_exec.prj) conform to the new folder structure and easier to read
- Corrected paths in project files and makefiles (PHP 4 & 5)
- Removed unused wbSetImage() parameter: nIndex (internal function)
- Removed wb_debug.iss from distribution
- Other minor changes

Version 0.42 and before

To review the changelog for version 0.42 and before, see archived changelog in

See also

Tutorials | WinBinder Manual | To Do list