The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Win32::GUI::ReleaseNotes::RN_1_04 - This is the release notes for Version 1.04 of Win32::GUI

Release Date

15th October, 2006.

IMPORTANT INFORMATION

This section details issues that are essential to understand when upgrading from earlier versions of Win32::GUI.

Exported Constants

The way that Win32::GUI exports constants has changed. Ensure that you read the "Deprecated feature status" section of this document so that you understand the backwards compatibility issues.

Dual-life modules

This version of Win32::GUI includes the modules Win32::GUI::AxWindow, Win32::GUI::DIBitmap, Win32::GUI::Grid, and Win32::GUI::Scintilla (originally by Laurent Rocher: http://rocherl.club.fr/Win32GUI.html).

Please uninstall any previous versions of these modules that you may have installed before installing this version of Win32::GUI.

Summary of Changes

This is a summary of changes between V1.03 and V1.04 See the CHANGELOG file in the distribution for the full detail.

New Features

New Packages

Win32::GUI::AxWindow
Win32::GUI::Constants
Win32::GUI::DIBitmap
Win32::GUI::DropFiles
Win32::GUI::Grid
Win32::GUI::Scintilla
Win32::GUI::ReleaseNotes

New Methods

Win32::GUI

Acceptfiles (Tracker: 1323988), Animate (Tracker: 1266930), ClassData, GetKeyState, SetWindowPos (Tracker: 1469648).

Win32::GUI::Region

ExtCreateRegion (Tracker: 1469648), GetRegionData.

Win32::GUI::Tooltip

AdjustRect, GetBubbleSize, SetTitle.

New Events

For all Windows

DropFiles (Tracker: 1323988).

New Documentation

Win32::GUI::ListBox

Better documentation for the differences between SetCurSel and SetSel (Tracker: 1177898).

Win32::GUI::Textfield

Correct documentation for -autohscroll and -autovscroll.

Win32::GUI::Tooltip

Complete documentation for the Win32::GUI::Tooltip class

Other Features

Better dialog navigation for Textfields

<TAB> can now be used to move out of a multi-line Textfield when using the -dialogui option on a Window.

A -wantreturn option has been added to stop the <RETURN> key firing the default Click event for a multi-line Textfield when using the -dialogui option on a Window. This replaces the previous use of -addstyle => ES_WANTRETURN.

Ballon tooltips for NotifyIcon

The Win32::GUI::NotifyIcon package has been re-worked. There is now no need to use the -id option, and balloon tooltips are supported on Win2k and above. (Tracker: 1065072)

More options for Win32::GUI::DoEvents()

It is now possible to select which messages you want to process with DoEvents.

More ways to create cursors, icons and bitmaps

The Cursor, Icon and Bitmap constructors have been enhanced to allow creation from resources, including the "standard" windows resources. See the standard_images.pl sample to browse the standard resources.

Easier way to browse and run the demos

A new script win32-gui-demos will be installed in your perl bin directory. You should be able to get a full list of the sample code distributed with Win32::GUI, view the source and run the demos by typing win32-gui-demos at your command prompt.

Better Splitter implementation

The Win32::GUI::Splitter implementation has been re-written to provide more robust operation. The splitter bar can no longer be moved outside the parent window, which used to result in drawing problems, and the bar itself is now more nicely drawn. (Tracker:1363141)

The -background option now works for splitter windows.

Better behaviour from LoadLibrary

The Win32::GUI::LoadLibrary() function has been enhanced so that it converts any passed path to a Win32 representation before trying to use it. Specifically this means that slashes are canonicalised to '\', and under Cygwin, cygwin style paths are converted to Win32 paths.

Complete re-work of Tooltip class

The Win32::GUI::Tooltip implementation has been re-worked to allow all the features to be used, and now there should be no crashes with many of the methods which had been incorrectly implemented. The new implementation should be backwards compatible with what was there before, but read the documentation to find out about all the new features you can use.

The constructor has some new options -nofade, -noamimate and the -balloon option is documented. -balloon option along with the new SetTitle method allows you to make use of balloon tooltips.

The events (NeedText, Pop, Show) now have a second parameter allowing you to correctly determine if the first parameter is a window handle or a tool id.

Bug Fixes

Reported Bugs

Fix some crashes (Trackers 1243378 and 1248578)
Fix some memory leaks (Tracker: 1201190)
Fix drawing problems with coloured backgrounds (Tracker:1363141)

Other Bugs

-background and -foreground options now work for RichEdit windows
The SendMessageTimout implementation now matches the documentation
-truncate option now works correctly for Label windows
SetTabStops() method now works for ListBox windows
The demo code all works
Fix memory leak in Win32::GUI::DIBitmap::AlphaCopyToDC method

Deprecated feature status

This section documents features that have been deprecated in this release, or in recent releases, and feature that will be deprecated in up-coming releases.

Win32::GUI::Constants

The introduction of Win32::GUI::Constants means that we now have access to a very large number of constants, so the current behaviour of Win32::GUI to export all constants to the calling namespace by default is no longer appropriate. So, a bare

  use Win32::GUI;

now generates a warning that the old default behaviour will be deprecated - although the export behaviour of Win32::GUI 1.03 is maintained except for this warning.

To eliminate this warning and correct your script, do one of the following:

If you don't need any constants, use the empty list:
  use Win32::GUI();
If you need some constants, name them explicitly:
  use Win32::GUI qw(ES_WANTRETURN CW_USEDEFAULT); # Two constants exported
  use Win32::GUI qw(/^MB_/);   # Export all constants starting with MB_

See the Win32::GUI::Constants documentation for the full allowable syntax.

You are advised to fix your scripts now, as the next version will stop exporting any constants by default.

Although not advised, you can suppress the warnings by turning deprecated warnings off:

  no warnings 'deprecated';

Additionally accessing constants from within the Win32::GUI namespace is deprecated. I.e.

   -addstyle => Win32::GUI::WS_BORDER,

will generate a warning with this release, and will stop working with the next release. Use one of the following methods instead:

use the Win32::GUI::Constants namespace instead
  -addstyle => Win32::GUI::Constants::WS_BORDER(),
use any other namespace you fancy
  use Win32::GUI qw(-exportpkg => A::B -autoload);
  ...
  -addstyle => A::B::WS_BORDER(),
maintain compatibility of existing scripts
  use Win32::GUI::Constants qw(-exportpkg => Win32::GUI :compatibility_win32_gui);
  ...
  -addstyle => Win32::GUI::WS_BORDER,

Win32::GUI::NotifyIcon

It is no longer necessary to use the '-id' option to any of the Win32::GUI::NotifyIcon methods. The ID is now entirely handled internally. You will receive deprecated warnings if you use it.

In particular, removing Icons from the system tray should be done using

  $NI->Remove();

and not by the (now deprecated)

  $NI->Delete(-id => 1);

Removal of GUI:: namespace

For at least the last 6 years the Win32::GUI namespace has been aliased to the GUI namespace for backwards compatibility with very early scripts. This aliasing has been removed, and any remaining scripts will need updating.

Contributors to this release

Robert May
Reini Urban
Jeremy White