WinBinder To Do / Bug list


Item #4: wb_set_text() must not select items

wb_set_text() must not be used to select items from controls. Should use wb_set_selected() instead



Item #23: Missing topics in WinBinder manual

- Comprehensive descriptions and code examples for all functions
- Overview: The status bar
- Overview: The toolbar
- Overview: Working with treeviews
- Overview: The Windows message system
- Overview: Windows design conventions and XP themes
- WinBinder installation: folder structure



Item #24: Create descriptions inside C code

Provide at least a one-line description for:

- Functions
- Structures and types
- Constants
- Variables



Item #31: Support to Windows Clipboard

Support reading data from and to the Clipboard. One option is to use standard WB functions like:

wb_get_text()
wb_set_text()
wb_set_image()

and create a special constant, "Clipboard".



Item #32: wb_set_text() must not be used to select things

wb_set_text() não deve nunca ser usada para selecionar um item de nenhum controle



Item #39: List boxes with images

Use wb_set_image() or wb_set_item_image() to associate icons or bitmaps to list box items



Item #40: Editable combo boxes

Drop-down combo boxes are created with style CBS_DROPDOWN instead of CBS_DROPDOWNLIST



Item #41: Use wb_create_items() and wb_delete_items()

Combo boxes and list boxes should allow wb_create_item(<$id>, <$value or $text>, [$index]) and wb_delete_items($index)



Item #42: Create items with wb_set_text()

Combo boxes and list boxes should allow the creation of items with wb_set_text() if the text parameter is an array



Item #43: Wrong parameters are passed through callback function

phpwb_wb_lib.c: pwbo->handle is not being returned correctly.

Parameters to be passed to callback: hctrl and param (array with parent, lparam, etc.)



Item #44: Events not being passed to callback function

Separate the KeyDown, Change, MouseDown, etc. events



Item #49: Combo boxes with images

Use wb_set_image() or wb_set_item_image() to associate icons or bitmaps to combo box items



Item #56: . Changes to wb_read_ini_key()

* Should either read INI entries or change function name
- Return integer values in addition to string values
- Support reading binary data and other odd formats



Item #57: wb_exec() should work in console mode

- wb_exec() should accept parameters
- Should capture the output (see commented-out code in phpwb_winsys.c)
- Document extra parameter in function



Item #60: wb_set_item() does not have standard parameters

Must check with other functions



Item #61: Merge wb_set_image() with wb_set_item_image()

There should be more cases of functions to merge



Item #62: wb_set_selected() must do treeviews

wb_set_selected() must select items from treeviews



Item #64: Unify bitmap, ImageList and BitBlt functions

(See the GD extension)

Proposed function set:

. wb_load_image($filename, $index=0)
. wb_create_image($width, $height, $background=BLACK)
. wb_create_mask($image, $transparent_color)
. wb_copy_image($dest, $source, int $target=0, $ytarget=0, $width=0, $height=0, $xsource=0, int $ysource=0, $ROP=SRCCOPY)
. wb_mask_image($dest, $source, $mask, int $target=0, $ytarget=0, $width=0, $height=0, $xsource=0, int $ysource=0)
wb_save_image($image, $filename, $format="BMP")
wb_scale_image($dest, $source, int $target=0, $ytarget=0, $targetwidth=0, $targetheight=0, $xsource=0, int $ysource=0, $sourcewidth=0, $targetwidth=0, $ROP=SRCCOPY)
wb_tile_image($dest, $source, int $target=0, $ytarget=0, $width=0, $height=0, $ROP=SRCCOPY)



Item #65: Separate threads

Thread the created windows somehow, so that events to the handled process are queued up, something like:

wb_set_busy($main, true); // do long loop wb_set_busy($main, false); // continue...

Once the latter is complete, the queued events will be sent to the procedure (or a 'queued' specific procedure). That way we can process intensive applications and have the GUI not freeze up while it is done.



Item #66: PHP-style documentation

Optional



Item #67: Rename wb_set_pixel() to wm_draw_pixel()

Should do it?



Item #68: wb_create_window() may abort execution

wb_create_window() (and probably other functions too) aborts execution if parent window is an arbitrary number like 1, 200, etc. The cause is that wbIsWBObj() does not effectively check if pwbo is a valid WB object and aborts when trying to dereference an invalid pointer. The fix would be to create a global list of valid WB objects.



Item #69: RegEx to match LCC compilation errors

When Command Results (in TextPad, but should work in other editors too) shows several file names in the same line, the regular expression ^\(Error\|Warning\) \([A-Za-z]:[^:]+\): \([0-9]+\) does not work.

To reproduce: undefine ZTS



Item #70: Allow disabled and checked menu items

Must add a new element to arrays when creating menu items



Item #73: Always on top

Neww option for top-level windows: always on top



Item #75: Dialogs do not send IDCLOSE

Dialogs, when closed, are not sending a WM_COMMAND message with IDCLOSE as the wID parameter



Item #76: Modal dialog boxes should have correct behavior

The function that creates a modal dialog box should return only after the dialog is closed



Item #78: Automatic creation of edit control (buddy)

(No description)



Item #80: * Tabs do not paint themselves after child sliders are moved

Solved with the creation of tab pages.

Operating sliders (trackbars) and horizontal scroll bars make tab controls behave strangely if they are children of the tab control.

Only the current tab is redrawn. At least once, some tabs in fact disappeared.

Strangely, vertical scroll bars do not have this effect.

If the slider or scroll bar is moved but its value is reset or set to zero before the left mouse button is released, this problem does not occur.

Careful observation of the messages sent by the controls show that the WM_PAINT and WM_ERASEBKGND messages are not sent when these controls (slider, horizontal scroll bar) are set to zero. A vertical scroll bar does not send these controls, which seems to confirm the hypotesis.



Item #82: Allow any images in menus

Today's limitations:

- Shows only the "checked" image
- Only 13 x 13 pixels
- Whites become transparent
- Colors are faded



Item #83: Borderless Windows

Allow the creation of "raw" windows with no border, title bar, or menu.



Item #84: Image buttons

Implement owner-draw buttons or a new class



Item #85: "Latch" buttons

Press to push, press again to release



Item #86: Buddies can't allow entries outside spinner range

(No description)



Item #88: * A window cannot show two bitmapped buttons

Cannot show two bitmapped buttons at the same time in the same window

Solved: removed the first ocurrence of DeleteObject() from SetTransparentBitmap()



Item #89: Modeless toolboxes

Allow creation of modeless toolboxes (with shorter title bars and smaller Close button)



Item #90: Implement calendar (date/time control)

(No description)



Item #92: * wb_message_box() may crash the application

Calling wb_message_box() without the parent parameter (a PWBOBJ type) crashes the application. Othe control and window functions may possibly crash as well.

Example:

wb_message_box(WBC_WARNING, "hi")



Item #94: Three-state check boxes

(No description)



Item #97: Color swatch buttons

A new class?



Item #98: Process drag-and-drop in ListViews

(No description)



Item #102: wb_set_text(array) should create items in combo boxes and list boxes

Combo boxes and list boxes with wb_set_text(array) should create items



Item #105: Implement context menus and pop-up menus

(No description)



Item #106: Context-sensitive help

- Automatic context-sensitive help for dialogs
- May use wb_exec() with parameters so there is no need to create a new function



Item #107: Auto geometry control

Resizable windows should allow the setting of maximum and minimum sizes (message WM_SIZING)



Item #109: Convert HTML to RTF

(See SIGED project)



Item #110: Convert bitmaps between GD and Windows

Convert bitmaps between GD and Windows and vice-versa



Item #111: Convert between bitmaps, icons, and cursors

Convert:

- Bitmaps to icons
- Icons to bitmaps
- Bitmaps to cursors
- Cursors to bitmaps
- Cursors to icons
- Icons to cursors



Item #112: Convert Rich Edit Format to HTML

(See SIGED project)



Item #113: Incorrect window height in RC files

* For tab pages, the interface designer must add about 15 dialog units or 24 pixels to all controls. This was solved with the creation of container tab pages.

- Dialog boxes must be designed higher and taller



Item #114: Create function wb_set_font()

Must allow changing the font of a control or window



Item #115: Create a callback for window activation

Create a callback to Windows message WM_ACTIVATE



Item #116: Increase source code security

Using the PHP Bytecode Compiler from PECL to provide extra protection when releasing WinBinder applications to users



Item #117: Implement mouse cursors

Must implement mouse cursors



Item #118: Standard use of trigger_error() in PHP

PHP code should use __FUNCTION__ and E_USER_WARNING in trigger_error()



Item #119: Editable RTF control

(No description)



Item #120: Drag-and-drop support

The main window should accept dropping files from other apps such as Windows Explorer



Item #121: Add items to any treeview position

Items currently can be added only as the end of a treeview



Item #123: Implement Print system dialog

(No description)



Item #124: Implement Page Setup system dialog

(No description)



Item #125: Implement Font system dialog

(No description)



Item #129: Drop-down buttons in toolbars

(No description)



Item #131: Set maximum number of characters

(No description)



Item #133: Fix in wbCreateTreeViewImages()

Use ImageList_AddMasked() in wbCreateTreeViewImages() (API layer)



Item #135: Avoid cascading events and messages

Callback functions are receiving multiple events. This should be avoided by filtering the notification messages according to the action (mouse click, keyboard, focus, etc.)

Generally, messages should be generated only via user actions.

Filter user commands in DefaultWBProc(). Try: (LPNMHDR)lParam)->code == NM_CLICK, etc.



Item #136: Implement user-defined controls

The programmer may be able to define a class and do a callback to process mouse events, keyboard events, WM_PAINT etc.



Item #138: Create function wb_draw_bitmap()

In fact it does a BitBlt



Item #139: Function to cross-reference two tables

It seems that the SELECT SQL command may do that already, must just encapsulate it in a function



Item #140: Convert integer RGB to array

Functions to convert integer RGB values to 3-element arrays and vice-versa



Item #141: Bitmapped buttons with XP themes

(No description)



Item #142: Implement hacking functions and support

t_hack.php must work



Item #143: Resize status bars automatically

Resize status bars automatically whenever a WM_SIZE event is issued



Item #144: Faster wb_set_pixel()

See C:\@download\Develop\Code\Graphics\SetPixel



Item #145: Create 'enable_hack_functions' flag

Create an 'enable_hack_functions' flag in PHP.INI



Item #146: Make one WB app call another

For one WB app to call another the two applications should have different namespaces (is this possible in pHP?) and/or create separate processes.



Item #147: Flat scrollbars

(No description)



Item #154: * Windows timers

Use WM_TIMER and a callback function



Item #156: Implement hyperlink controls

Hyperlink controls can display a URL, an e-mail or other kind of hyperlink and call the appropriate application when clicked.

The SysLink control seems tempting, but it was introduced in Comclt32.dll version 6.0 only (which means Windows XP). Thus the best way would probably be to subclass (or superclass) the Static class or to create a new class from sratch.



Item #157: Naming conventions

There is still some confusion between controls, windows, Window (the OS), menus, toolbars, items, etc.

Use the word "widget"?



Item #159: Text buttons in toolbars

Implement text buttons in toolbars. The text is being passed through pitem[i]->pszCaption already



Item #162: Implement scrollable container

New control class: a scrollable window to contain images, checkbox lists and other controls. see Creating Scroll Bars in Windows API Help



Item #163: Irregularly shaped windows

Option to craete application windows with transparent masks for irregularly-shaped, borderless windows



Item #166: Optional grid lines in ListViews

(No description)



Item #168: MIDI support

Use MMSYSTEM functions and/or mciSendString()



Item #169: * Masked (password) edit boxes

(No description)



Item #170: Image inclusion in wb_create_items() ins not consistent

Verify this with other functions



Item #174: Allow multiple selection in list boxes

(No description)



Item #175: wb_get_value() must return lParam

In a treeview, wb_get_value($tree) must return the lParam value of the selectd hItem



Item #176: wb_set_control_value() must set lParam

In a treeview, wb_set_control_value($tree, $n, $value) must set the lParam value of the $n-order item



Item #177: * Numeric-only edit boxes

(No description)



Item #178: No need to use GetClassName() in DefaultWBProc()

Still one occurrence in the processing of WM_NOTIFY



Item #180: Closing modeless dialogs terminates applications

A closing modeless dialog or a new top-level window that calls wb_destroy_window() terminates the application that calls it. For example:

function process_1($window, $id)
{
wb_destroy_window($window);
}

$win2 = wb_create_window(NULL, PopupWindow, "WinBinder", 120, 90);
wb_set_handler($win2, "process_1");



Item #182: Automatic one-line help on status bar

See message WM_MENUSELECT in the Windows API documentation.



Item #183: Most recent files (or folders) list

Default menu is File, but should allow any menu



Item #184: Single instance option

There should be an option so that apps have only one instance. It is easily done.

References:

- Petzold
- codeproject.com/cpp/avoidmultinstance.asp



Item #186: Buttons maintain borders after clicking

Maybe only those which are over tab controls, or only bitmapped ones?



Item #187: Static controls should scroll for large images

(No description)



Item #188: Static controls do not repaint themselves

(No description)



Item #191: Treeviews should store values

For a treeview to be useful, it must storea value or array. If not, it will only return a string in wb_get_text() and wb_get_value() will return nothing. Another option is to associate all items with a particular value



Item #192: Pass extra parameters to callback

- hctrl
- param (array with parent, lparam, etc.)



Item #193: Store information in windows

Allow the storage and passing of any values in a window by using the extra bytes in SetWindowLong (GWL_USERDATA).



Item #194: Allow more than one radio button group

(No description)



Item #195: Pop-up menus

Pop-up / context menus



Item #198: Process keyboard messages

Process WM_KEYUP, WM_KEYDOWN, etc.



Item #206: Remove useless constants

WBC_INFO, WBC_OK, etc. might be replaced by "info", "ok" and so on



Item #207: Remove wb_windows.php

- Remove all PHP code from wb_windows.php and port all functions to the DLL
- All temporary functions should be eliminated



Item #208: Fix wb_set_position()

- The wb_set_position() function is not working

- wbSetWindowPosition() and CenterWindow() (wb_window.c) should use hwndParent, center children windows on their parents and center horizontally only or vertically only according to xPos, yPos



Item #209: Controls over tabs show wrong background colors in Windows XP

This is a rather complex problem and it comes in two flavors:

1) Labels, checkboxes and trackbars show their own background colors when positioned over a tab control.
2) If the "default" Windows theme is enabled, tabs and status bars show up in default gray instad of the system background color.

Possible solutions:

* Add a container window to tab pages (background is gray, but it actually solves the problem)
- Remove background from the following controls (at least): Label, CheckBox, Slider. Background is visible when they are over a tab control on themed Windows XP.
- Subclass Frame and Picture controls to add background over tabs
- Use a portion of the window itself as a background bitmap for the control
- Use functions from UXTHEME.DLL: OpenThemeData, SetWindowTheme, DrawThemeText etc.

References:

codeproject.com/wtl/ThemedDialog.asp
codeproject.com/cs/miscctrl/themedtabpage.asp



Item #210: Resource leaks

Verify resource leaks in:

- SetTransparentBitmap()
- others (TBD)



Item #217: Implement splitter windows

(No description)



Item #218: Auto save window size and position

Windows should have the option of saving their sizes and positions automatically to the registry or to an INI file.



Item #220: Adjust thumbnail size according to data size

Adjust thumbnail size according to data size



Item #221: Cannot remove icon from toolbar buttons

If no index (null or empty index) is specified to a toolbar button, no icon should appear. Icon number zero is appearing instead.

Workaround: use some non-existnt number as the index



Item #225: * wb_set_value() does not work with spinners

wb_set_value($ctrl, 10, 1, 100) does not work with spinners

(Apparently solved)



Item #228: Status bars with panes (sections)

Use wb_create_items() to create panes inside status bars, exactly as used to create items inside a menu



Item #229: Sub-menus

How to specify them in an array?



Item #231: Support compiled resources

Support compiled Windows resources (DLLs, EXEs, etc.) as well as parsed RC files



Item #232: Support other resource formats

- .NET resources use .resX files (XML format)
. XRC for wxWidgets: http://www.wxwidgets.org/manuals/2.5.2/wx_xrcoverview.html



Item #233: Printing support

Implement support to printing



Item #234: Improve compatibility with resource editors

Currently supports WinAsm Studio only. Problems

- Not processing "NOT 0x10000000 | " (invisible)


Other options are:

LCC-Wedit
Visual C++
Pelles C
Others



Item #238: Implement tabs with icons

(No description)



Item #242: . Build WinBinder under several compilers

* LCC
* VC++
- MinGW (GCC)
- Pelles C
- Digital Mars



Item #244: Implement wm_pause() function

Should use PHP functions microtime(), sleep()?



Item #245: Move class-specific code to other modules

WM_COMMAND.C, WM_WINDOWS.C and possibly other C modules have code that is class-specific.

Ex.: WC_TABCONTROL processing in DefaultWBProc()



Item #246: Remove the beep when a message box appears

This seems to be a system-wide setting. Apparently the only way to solve this is to create a message box replacement.



Item #248: Control functions must accept arrays

All control functions must accept arrays in addition to a control handle. Example:

$txt = wb_get_text(wb_get_control($main, ID_OPEN))

should be the same as

$txt = wb_get_text(array($main, ID_OPEN))



Item #249: Arrays and comma-separated values must be equivalent

Functions that accept arrays should also accept comma-separated strings and vice-versa



Item #252: Mobile and dockable toolbars

ReBar class



Item #254: TreeView with checkboxes

(No description)



Item #255: Treeview with filesystem

Same as used in SHBrowseForFolder()



Item #257: Treeview nodes must store collapsed/expanded state

(No description)



Item #258: A treeview must return the level and index of the selected item

(No description)



Item #259: * Use constants for resources

Use constants AppWindow, ModalDialog, etc. instead of 102, 103, etc.



Item #261: Check library for memory and resource leaks

(No description)



Item #265: WAV sound support

Use MMSYSTEM functions and/or mciSendString()



Item #267: Windows Registry support

Support for reading and writing to the Registry

- See extensions win32std and winreg



Item #269: Auto save column size and grid state

It is already possible to do that "manually" by using internal C function wbtemp_get_listview_column_widths().



Item #270: In-place label editing

(No description)



Item #271: In-place label editing

(No description)



Item #272: php-win.exe could be smaller

php4\php-win.exe could be smaller, about the size of php.exe (24 kB). Currently it is about 48 kB, taken from PHP-GTK with some icons removed and one replaced



Item #273: pwbo->handle is not being returned correctly

phpwb_wb_lib.c: pwbo->handle is not being returned correctly



Item #275: Graphical functions must accept both handles and files

Graphical functions must accept both handles and files:

wb_get_image_size() etc.



Item #276: wb_get_system_info() should return all information

Without parameters, wb_get_system_info() should return an associative array with all the information available



Item #277: wb_play_sound() does not work in some systems

wb_play_sound() seems not to work in some systems; yet to be confirmed as a bug



Item #280: Merge some control functions

- wb_set_image() and wb_set_item_image() have different parameters
- Other control functions can be merged as well



Item #282: wb_set_selected() does not have standard parameters

In function wb_set_selected(), the Item and Selected parameters must switch positions



Item #284: Colored stripes

(No description)



Item #285: . ListViews with sortable columns

* Implement a flag for sorting or not
* Sort by clicking the appropriate header
* Create a function to sort columns
* Automatic numeric sort
* Ascending/descending sort
- Flag for auto-sorting
- Sort in opposite direction by clicking the appropriate header again
- Indicate sorted column using an arrow
- Individual flags for specific sort types: case-sensitive/insensitive/numeric, character code vs. locale



Item #287: Implement hotkey controls

(No description)



Item #288: Implement HTML page controls

An HTML page control will encapsulate a HTML page in a way similar to a Rich Edit control



Item #289: Associate data with list items

See "Special Combo Box Features" in Win32 API help.



Item #290: * Process double-clicks in list boxes

(No description)



Item #291: * Process double-clicks in list views

(No description)



Item #292: SQLite performance low

Reading and writing data should be faster. Any cache configurations?



Item #293: High-resolution timers

(No description)



Item #294: Auto save last tab selected

(See "Auto save window size and position")



Item #295: Auto save column positions and widths

(See "Auto save window size and position")



Item #296: Implement Customize Toolbars system dialog

(No description)



Item #297: Auto save splitter window size and position

(See "Auto save window size and position")



Item #298: Provide additional low-level accesses to the API

WinBinder should accept / supply:

- Hooks
- A mechanism to create new WinBinder object classes
- Plug-ins == foreign DLLs with new classes
- Pointers to global variables

To allow general access to the Windows API:
- Option 1: just use the ffi extension (leave it to the programmer)
- Option 2: create a simple mechanism to call API functions, something like DllImport() in VB. Use GetModuleHandle() / GetProcAddress(), possibly based on ffi or in w32api_register_function() (W32api extension)



Item #299: Optional dotted lines in treeviews

(No description)



Item #300: Resize toolbars automatically

Resize toolbars automatically whenever a WM_SIZE event is issued



Item #301: Tooltips must be globally optional

(No description)



Item #302: Optional flat toolbar

A flat toolbar is (or was) called "coolbar" to set it apart from old-style toolbar buttons (with borders).



Item #303: wb_get_selected() must do treeviews

The wb_get_selected() function does not yet return a value for treeviews (it's always 0 now).



Item #304: Main windows don't recognize tab / shift+tab when a tab control is present

(No description)



Item #305: MDI windows

Possibly with tabs (see codeproject.com/docview/tabbedmdi.asp)



Item #306: wb_set_value() does not work well with items

wb_set_value() should have an extra parameter to deal with items. As it is now, it can set but not clear a check box in a ListView. Something like

wb_set_value($list, true, array(1, 2, 3));

instead of

wb_set_value($list, array(1, 2, 3));



Item #307: Rich Text in ListViews

For text in color, bold, etc.



Item #308: Create more toolbar icon sets

With different looks



Item #309: Clipboard support

Copy selected lines to clipboard



Item #310: Clipboard support

Copy selected item to clipboard



Item #311: Possible conflict between lparam and tab page numbers

When the function wb_create_control() is used to create a control inside a tab page, lparam is used to indicate the page number. It currently cannot be used to anything else. One possible solution would be to use strings like "tab0" and pass an array to lparam if some other value is needed (e.g. array("tab0", 120) to pass the value 120 to the control).



Item #312: Test database wrapper for MySQL

Support is currently for MySQL and SQLite, but only SQLite was tested



Item #313: parse_ini() should understand "yes" and "no"

Strings are "yes", "no", "on", "off", "true", "false", case-insensitive



Item #314: Non-destructive masks

In wbCreateMask(): perform a non-destructive mask creation. This function currently changes colors in the original bitmap. although this normally has no consequences



Item #315: wb_get_pixel() and wb_set_pixel() should accept bitmap files

wb_set_pixel() and wb_set_pixel() could also accept the name of a bitmap file in addition to a bitmap handle



Item #316: Allocate memory dynamically in various places

Allocate memory dynamically instead of limited static memory

In wbtemp_create_menu(): allocate accel[] dynamically like pitem



Item #317: Separate RGB values in wb_get_pixel() and wb_set_pixel()

These functions should accept an array of three values in addition to a DWORD



Item #318: Include information for phpinfo()

winbinder_module_entry() function, required for ZEND module, should include information for phpinfo()



Item #319: Error log

wbError() should optionally log errors to a file and/or use a message box to display errors



Item #320: Support for non-Windows multimedia formats

MP3, etc.



Item #321: Enhancements to wb_get_address()

wb_get_address() should get the address of other PHP objects besides strings



Item #322: Use Windows API function MaskBlt()

Use Windows API function MaskBlt() for masking in functions:

- wbMaskPartialBits()



Item #323: Enhancements to wbCreateControl()

- Call wbCreateToolbar() if wbclass is a toolbar
- Call wbCreateMenu() if wbclass is a menu



Item #324: Enhancements to wbGetControl()

- Process treeview items
- Must validate toolbar item first



Item #325: Fixes to wbGetTextLength()

Try to fix control text length bug (although it does not seem to occur ).

According to WinHelp for GetWindowTextLength, "To obtain the exact length of the text, use (...) the GetWindowText function."

Seems to make no difference, however.



Item #326: Combo box items contain a newline

The combos return a newline after the text



Item #327: nIndex not used in wbSetImage()

(No description)



Item #328: Reference menus like controls

In wbGetWBObj(): return PWBOBJ from menus too



Item #329: Change title of some common dialogs

How to change the title of a following common dialog:

- Select Color
- Browse for Folder
- Font



Item #330: Enhancements to windows processing handlers

DefaultWBProc() is the common processing routine for all parent windows.

- Don't know which is the correct notification for trackbars, so pfnProcess is called all the time
- Use the return value as a flag to know whether the calling function should continue default processing or not



Item #331: * Hovering over a slider is enough to generate a callback

Changed DefaultWBProc() so sliders (AKA trackbars) are processed in the conventional way, i.e. through the WM_HSCROLL / WM_VSCROLL messages instead of the mystery notification message -12.

This fixes the bug where just moving the mouse over the trackbar cursor was enough to generate a message.



Item #332: Test wb_test_system_info() in Windows 98

wbGetSystemInfo() calls function GetGDIObjects(), which was not tested under Windows 98



Item #333: . Minimize to taskbar status area

* Minimize main window to an icon in the taskbar status area
* Create a tooltip for the icon
* Remove the icon on exit
* Restore the window when double-clicking
- Perform a custom action (restore the window, display a custom pop-up menu, do nothing etc.) when clicking
- Display the system menu (or a custom pop-up menu) when right-clicking



Item #334: Parameters in wbGetSystemInfo() are strange

(No description)



Item #335: Fix top-level window classes and dialog boxes

Top-level window classes and dialog boxes don't work properly, need an overall code revamp



Item #336: Improve icons minimized to taskbar

Icons that are minimized to taskbar may get reduced to 16 colors in Windows 2000 (not in XP)



Item #337: Improvements to numeric edit boxes

- Subclass EditBox to allow digits, dots, commas, hyphens and possibly spaces so users can enter floats
- Filter any other characters so even the programmer can't enter non-numeric characters with wb_set_text()



Item #338: Minimal PHP DLL

Provide minimal versions of php4ts.dll/php5ts.dll after stripping all non-essential libraries. Maybe tweaking PHP\PHPn\source\main\config.w32.h?



Item #339: Rename ListView class to Grid?

(No description)



Item #340: Merge GroupBox and Frame classes

The WinBinder GroupBox and Frame classes may be merged into a single class, possibly named Static.



Item #341: * Edit boxes do not accept null values

Fixed bug that prevented a NULL value to be assigned to an edit box and other controls. This bug has three potential causes:

1) The cause was a call to is_scalar() in the body of PHP function wb_set_text(). This was replaced by is_array().

2) GetWindowText() does not return a BOOL, but the text length. Thus a zero is a valid return value, and cannot be passed directly as a return value to wbGetText() which returns a BOOL. Two ocurrences of this error were fixed.

3) wbtemp_get_text() was returning a NULL instead of an empty string if the control or window text was empty. However, wb_set_text still returns NULL in some situations...



Item #342: New function: wb_get_image()

Must return a handle to an image from a window, control, menu, etc.



Item #344: * Process double-clicks in treeviews

(No description)



Item #345: * wb_set_selected() must change current tab

(No description)



Item #346: Cannot create accelerators without Ctrl, Shift, Alt

Accelerators like "M", "Delete", i.e. without "Ctrl", "Shift" or "Alt", do not work



Item #347: Sort control contents

Sort list boxes, combo boxes and other controls using wb_sort()



Item #348: Tab controls do not behave correctly if handler is not assigned

A tab control only shows/hides the correct child controls if wb_set_handler() is assigned to its parent window.

This only occurs in the very rare event of creating a window that has a tab control and not assigning a handler to this window.



Item #349: Tabs placed at the bottom

Option to make tabs appear at the bottom or on the right side: Use style TCS_BOTTOM, TCS_VERTICAL, etc. (CommCtrls v. 4.70) "This style is not supported if you use ComCtl32.dll version 6"



Item #350: Tooltips on tabs

Use TCS_TOOLTIPS



Item #351: Status bars with scroll bars

(No description)



Item #352: Allocate tab controls and pages dynamically

TABDATA should allocate items dynamically; now it is carrying a somewhat large data structure



Item #353: Fix keyboard interface for tab controls

- Give focus to tab controls and make them behave "normally", i.e. move the focus to the other controls in the page and outside the tab control. This is the standard behavior.

- Remember the control that has the focus in each tab page. Not standard behavior, but convenient.



Item #354: Multiline edit controls do not process tab / shift+tab correctly

After a multiline edit control receives the focus, it does not tab to the next (or previous) control



Item #355: Support for mouse wheels

Automatic support is already present in Windows XP, must check other systems