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