--- Win32-GUI-1.01_03-cygwin/GUI.h.orig	2005-06-30 23:36:14.000000000 +0100
+++ Win32-GUI-1.01_03-cygwin/GUI.h	2005-07-01 11:46:32.617500000 +0100
@@ -12,7 +12,6 @@
 #undef NOTRACKMOUSEEVENT
 #include <stdarg.h>
 #include <windows.h>
-#include <winuser.h>
 #include <commctrl.h>
 #include <commdlg.h>
 #include <wtypes.h>
@@ -20,9 +19,9 @@
 #include <shellapi.h>
 #include <shlobj.h>
 
-#if defined(_MSC_VER) && (_MSC_VER <= 1200) && (WINVER < 0x0500)
+#if defined(_MSC_VER)
 #include <math.h>
-#endif /* defined(_MSC_VER) && (_MSC_VER <= 1200) && (WINVER < 0x0500) */
+#endif
 
 #include "resource.h"
 
@@ -759,7 +758,7 @@
 // MSVC6 patches
 #if defined(_MSC_VER) && (_MSC_VER <= 1200) && (WINVER < 0x0500)
 /*
- * MSVC6 falsely misses these definitions. Need to check which SP fixed that.
+ * MSVC6 falsely misses these definitions.
  */
 typedef struct tagWINDOWINFO
 {
@@ -777,7 +776,7 @@
 
 #define WS_ACTIVECAPTION    0x0001
 
-BOOL WINAPI
+extern "C" BOOL WINAPI
 GetWindowInfo(
     HWND hwnd,
     PWINDOWINFO pwi
--- Win32-GUI-1.01_03-cygwin/GUI.pm.orig	2005-06-30 23:36:14.000000000 +0100
+++ Win32-GUI-1.01_03-cygwin/GUI.pm	2005-07-04 14:45:48.320625000 +0100
@@ -595,7 +595,7 @@
     tie %tier, $class, $oself;
     my $self = bless \%tier, $class;
 
-    # print "OSELF = $oself\n";   
+    # print "OSELF = $oself\n";
     # print " SELF = $self\n";
 
     my (@input) = @_;
@@ -770,7 +770,7 @@
     #       the name for the class (it must be unique!).
     #   -icon => Win32::GUI::Icon object
     #   -cursor => Win32::GUI::Cursor object
-    #   -color => COLOR 
+    #   -color => COLOR
     #       system color use as window background.
     #   -brush => Win32::GUI::Brush object
     #       brush use as window background brush.
@@ -790,7 +790,7 @@
     my %args = @_;
     my $self = {};
 
-    # figure out the correct background color 
+    # figure out the correct background color
     # (to avoid the "white background" syndrome on XP)
     if(not exists $args{-color} && not exists $args{-brush}) {
         my($undef, $major, $minor);
@@ -865,19 +865,19 @@
     #   -controlbox => 0/1
     #     Set/Unset system menu style.
     #   -titlebar => 0/1
-    #     Set/Unset caption style.    
+    #     Set/Unset caption style.
     #   -helpbutton => 0/1
     #   -helpbox => 0/1
     #   -hashelp => 0/1
     #     Set/Unset help context extended style.
     #   -toolwindow => 0/1
-    #     Set/Unset tool window extended style. 
+    #     Set/Unset tool window extended style.
     #   -appwindow => 0/1
-    #     Set/Unset app window extended style. 
+    #     Set/Unset app window extended style.
     #   -topmost => 0/1 (default 0)
     #     The window "stays on top" even when deactivated
     #   -controlparent => 0/1 (default 0)
-    #     Set/Unset control parent extended style. 
+    #     Set/Unset control parent extended style.
     #   -noflicker => 0/1 (default 0)
     #     Set to 1 to enable anti-flicker. This will eliminate all flicker from
     #     your window, but may prevent things like Graphic objects from showing
@@ -1062,11 +1062,11 @@
     #Code taken from Win32::GUI::AdHoc by Johan Lindström
     my ($winSelf, $winParent) = @_;
     defined($winParent) or $winParent = Win32::GUI::GetDesktopWindow();
-    
+
     #Avoid OO notation to enable us to use either a hwind or a Win32::GUI::Window object
     my $x = Win32::GUI::Left($winParent) + (Win32::GUI::Width($winParent) / 2) - (Win32::GUI::Width($winSelf) / 2);
     my $y = Win32::GUI::Top($winParent) + (Win32::GUI::Height($winParent) / 2) - (Win32::GUI::Height($winSelf) / 2);
-    
+
     Win32::GUI::Move($winSelf, $x, $y) and return(1);
     return(0);
     }
@@ -1089,7 +1089,7 @@
 # (@)PACKAGE:Win32::GUI::DialogBox
 # Create and manipulate Windows
 # Just like Window, but with a predefined dialog box look: by default, a DialogBox
-# can not be sized, has no maximize box and has C<-dialogui> enabled (eg. 
+# can not be sized, has no maximize box and has C<-dialogui> enabled (eg.
 # interprets tab/enter/esc).
 #
 package Win32::GUI::DialogBox;
@@ -1432,7 +1432,7 @@
     #    -wrap     => 0/1 (default 1)
     #       The text wraps automatically to a new line.
     #    -simple   => 0/1 (default 1)
-    #       Set/Unset simple style. 
+    #       Set/Unset simple style.
 sub new {
     return Win32::GUI->_new(Win32::GUI::constant("WIN32__GUI__STATIC", 0), @_);
 }
@@ -1516,7 +1516,7 @@
           $options{-width}  = $options{-size}[0];
           $options{-height} = $options{-size}[1];
         }
-         
+
         if(ref($options{-prompt}) eq "ARRAY") {
             $left = pop(@{$options{'-prompt'}});
             $text = pop(@{$options{'-prompt'}});
@@ -1783,9 +1783,9 @@
     #   -raggedright => 0/1 (default 0)
     #   -multiline => 0/1 (default 0)
     #     The control can have more than one line
-    #   -multiselect => 0/1 (default 0)   
+    #   -multiselect => 0/1 (default 0)
     #   -vertical  => 0/1 (default 0)
-    #   -tooltip => Win32::GUI::Tooltip object    
+    #   -tooltip => Win32::GUI::Tooltip object
 sub new {
     return Win32::GUI->_new(Win32::GUI::constant("WIN32__GUI__TAB", 0), @_);
 }
@@ -1815,7 +1815,7 @@
     #   -multiline => 0/1
     #     The control can have more than one line
     #   -nodivider => 0/1
-    #   -tooltip => Win32::GUI::Tooltip object    
+    #   -tooltip => Win32::GUI::Tooltip object
 sub new {
     return Win32::GUI->_new(Win32::GUI::constant("WIN32__GUI__TOOLBAR", 0), @_);
 }
@@ -2085,13 +2085,13 @@
     #
     # Class specific B<%OPTIONS> are:
     #   -align => left,right
-    #     When Left, positions the up-down control next to the left edge of the buddy window. 
-    #     The buddy window is moved to the right, and its width is decreased to accommodate the 
+    #     When Left, positions the up-down control next to the left edge of the buddy window.
+    #     The buddy window is moved to the right, and its width is decreased to accommodate the
     #     width of the up-down control.
-    #     When right, positions the up-down control next to the right edge of the buddy window. 
+    #     When right, positions the up-down control next to the right edge of the buddy window.
     #     The width of the buddy window is decreased to accommodate the width of the up-down control.
     #   -nothousands => 0/1
-    #     Does not insert a thousands separator between every three decimal digits. 
+    #     Does not insert a thousands separator between every three decimal digits.
     #   -wrap => 0/1 (default 0)
     #     Causes the position to "wrap" if it is incremented or decremented beyond the ending or beginning of the range.
     #   -horizontal => 0/1
@@ -2099,10 +2099,10 @@
     #   -autobuddy => 0/1
     #     Automatically selects the previous window in the z-order as the up-down control's buddy window.
     #   -setbuddy => 0/1
-    #     Causes the up-down control to set the text of the buddy window (using the WM_SETTEXT message) 
+    #     Causes the up-down control to set the text of the buddy window (using the WM_SETTEXT message)
     #     when the position changes. The text consists of the position formatted as a decimal or hexadecimal string.
     #   -arrowkeys => 0/1
-    #     Causes the up-down control to increment and decrement the position when the UP ARROW and 
+    #     Causes the up-down control to increment and decrement the position when the UP ARROW and
     #     DOWN ARROW keys are pressed.
     #
 sub new {
@@ -2143,7 +2143,7 @@
 # (@)PACKAGE:Win32::GUI::Animation
 # Create and manipulate animation controls
 # The Animation control displays an AVI animation.
-# To load an AVI file you can use the L<Open()|/Open> method; 
+# To load an AVI file you can use the L<Open()|/Open> method;
 # you can then use L<Play()|/Play> to start the animation
 # (note it will start automatically with the B<-autoplay> option),
 # L<Stop()|/Stop> to stop it, and L<Seek()|/Seek> to position it to
@@ -2360,15 +2360,15 @@
     #
     # Class specific B<%OPTIONS> are:
     #   -daystate  => 0/1 (default 0)
-    #     Set/Unset daystate style. 
+    #     Set/Unset daystate style.
     #   -multiselect  => 0/1 (default 0)
-    #     Set/Unset multiselect style. 
+    #     Set/Unset multiselect style.
     #   -notoday  => 0/1 (default 0)
-    #     Set/Unset notoday style. 
+    #     Set/Unset notoday style.
     #   -notodaycircle  => 0/1 (default 0)
-    #     Set/Unset notodaycircle style. 
+    #     Set/Unset notodaycircle style.
     #   -weeknumber  => 0/1 (default 0)
-    #     Set/Unset weeknumber style. 
+    #     Set/Unset weeknumber style.
 
 sub new {
     return Win32::GUI->_new(Win32::GUI::constant("WIN32__GUI__MONTHCAL", 0), @_);
@@ -2449,7 +2449,7 @@
 
     ###########################################################################
     # (@)METHOD:AddMasked(BITMAP, COLORMASK)
-    # Adds a bitmap to the ImageList; B<BITMAP> can be either Win32::GUI::Bitmap 
+    # Adds a bitmap to the ImageList; B<BITMAP> can be either Win32::GUI::Bitmap
     # object or filename.
 sub AddMasked {
     my($self, $bitmap, $colorMask) = @_;
@@ -2589,7 +2589,7 @@
 # (@)PACKAGE: Win32::GUI::Timer
 # Create and manipulate Timer resources
 #
-# The Timer object is a special kind of control: it has no appearance, its only 
+# The Timer object is a special kind of control: it has no appearance, its only
 # purpose is to trigger an event every specified amount of time.  You can reate a
 # Timer object in either of these ways:
 #   new Win32::GUI::Timer( PARENT, NAME, ELAPSE )
@@ -2598,9 +2598,9 @@
 # and C<ELAPSE> is the number of milliseconds after which the Timer() event will
 # be triggered.
 #
-# Once you've created the Timer object, you can change the ELAPSE parameter 
+# Once you've created the Timer object, you can change the ELAPSE parameter
 # with the L<Interval()|/Interval> method, or disables it with the L<Kill()|/Kill> method.
-# Note that Kill(), despite of its name, does not destroy the Timer object, 
+# Note that Kill(), despite of its name, does not destroy the Timer object,
 # so you can re-enable it later with Interval().
 package Win32::GUI::Timer;
 @ISA = qw(Win32::GUI);
@@ -2640,6 +2640,7 @@
     $window->{-timers}->{$id} = $name;
     # Add Timer into parent hash.
     $window->{$name} = $self;
+    $self->{-window} = \$window;
 
     Win32::GUI::SetTimer($window, $id, $elapse);
 
@@ -2664,6 +2665,12 @@
 sub Kill {
     my $self = shift;
     Win32::GUI::KillTimer($self->{-handle}, $self->{-id});
+
+    my $window = ${$self->{-window}};
+    # Remove id from timers hash
+    undef $window->{-timers}->{$self->{-id}};
+    # Remove name from parent
+    undef $window->{$self->{-name}};
 }
 
     ###########################################################################
@@ -2675,6 +2682,12 @@
          defined $self->{-id} ) {
         # Kill timer
         Win32::GUI::KillTimer($self->{-handle}, $self->{-id});
+	
+	my $window = ${$self->{-window}};
+	# Remove id from timers hash
+	delete $window->{-timers}->{$self->{-id}};
+	# Remove name from parent
+	delete $window->{$self->{-name}};
     }
 }
 
@@ -2751,9 +2764,9 @@
 
     my($self) = @_;
     if ( defined $self &&
-         defined $self->{-handle} && 
+         defined $self->{-handle} &&
          defined $self->{-id} ) {
-         
+
         Win32::GUI::NotifyIcon::Delete(
             $self->{-handle},
             -id => $self->{-id},
@@ -2920,139 +2933,139 @@
     my $key = 0;
     my %accels = @_;
     my @acc;
-    
+
     while( ($k, $v) = each %accels) {
         $flag = 0x0001;
         if($k =~ s/shift[-\+]//i)                { $flag |= 0x0004; }
         if($k =~ s/(ctrl|control)[-\+]//i)       { $flag |= 0x0008; }
         if($k =~ s/alt[-\+]//i)                  { $flag |= 0x0010; }
 
-                                                 # { $key = 0x01; } # VK_LBUTTON             
-                                                 # { $key = 0x02; } # VK_RBUTTON             
-                                                 # { $key = 0x03; } # VK_CANCEL              
-                                                 # { $key = 0x04; } # VK_MBUTTON             
-           if($k =~ /^backspace$/i)                { $key = 0x08; } # VK_BACK                
-        elsif($k =~ /^tab$/i)                      { $key = 0x09; } # VK_TAB                 
-#       elsif($k =~ /^clear$/i)                    { $key = 0x0c; } # VK_CLEAR               
-        elsif($k =~ /^return$/i)                   { $key = 0x0d; } # VK_RETURN              
-                                                 # { $key = 0x10; } # VK_SHIFT               
-                                                 # { $key = 0x11; } # VK_CONTROL             
-                                                 # { $key = 0x12; } # VK_MENU /ALT           
-        elsif($k =~ /^pause$/i)                    { $key = 0x13; } # VK_PAUSE               
-        elsif($k =~ /^capslock$/i)                 { $key = 0x14; } # VK_CAPITAL             
-        elsif($k =~ /^(esc|escape)$/i)             { $key = 0x1b; } # VK_ESCAPE              
-        elsif($k =~ /^space$/i)                    { $key = 0x20; } # VK_SPACE               
-        elsif($k =~ /^(pgup|pageup)$/i)            { $key = 0x21; } # VK_PRIOR               
-        elsif($k =~ /^(pgdn|pagedn|pagedown)$/i)   { $key = 0x22; } # VK_NEXT                
-        elsif($k =~ /^end$/i)                      { $key = 0x23; } # VK_END                 
-        elsif($k =~ /^home$/i)                     { $key = 0x24; } # VK_HOME                
-        elsif($k =~ /^left$/i)                     { $key = 0x25; } # VK_LEFT                
-        elsif($k =~ /^up$/i)                       { $key = 0x26; } # VK_UP                  
-        elsif($k =~ /^right$/i)                    { $key = 0x27; } # VK_RIGHT               
-        elsif($k =~ /^down$/i)                     { $key = 0x28; } # VK_DOWN                
-#       elsif($k =~ /^select$/i)                   { $key = 0x29; } # VK_SELECT              
-#       elsif($k =~ /^print$/i)                    { $key = 0x2a; } # VK_PRINT               
-#       elsif($k =~ /^execute$/i)                  { $key = 0x2b; } # VK_EXECUTE             
-        elsif($k =~ /^(prntscrn|printscreen)$/i)   { $key = 0x2c; } # VK_SNAPSHOT            
-        elsif($k =~ /^ins$/i)                      { $key = 0x2d; } # VK_INSERT              
-        elsif($k =~ /^del$/i)                      { $key = 0x2e; } # VK_DELETE              
-#       elsif($k =~ /^help$/i)                     { $key = 0x2f; } # VK_HELP                
-        elsif($k =~ /^[0-9a-z]$/i)                 { $key = ord(uc($k)); }                   
-                                                 # 0x30-0x39: ASCII 0-9                      
-                                                 # 0x41-0x5a: ASCII A-Z                      
-        elsif($k =~ /^left(win|windows)$/i)        { $key = 0x5b; } # VK_LWIN                
-        elsif($k =~ /^right(win|windows)$/i)       { $key = 0x5c; } # VK_RWIN                
-        elsif($k =~ /^(app|application)$/i)        { $key = 0x5d; } # VK_APPS                
-#       elsif($k =~ /^sleep$/i)                    { $key = 0x5e; } # VK_SLEEP               
-        elsif($k =~ /^(num|numeric|keypad)0$/i)    { $key = 0x60; } # VK_NUMPAD0             
-        elsif($k =~ /^(num|numeric|keypad)1$/i)    { $key = 0x61; } # VK_NUMPAD1             
-        elsif($k =~ /^(num|numeric|keypad)2$/i)    { $key = 0x62; } # VK_NUMPAD2             
-        elsif($k =~ /^(num|numeric|keypad)3$/i)    { $key = 0x63; } # VK_NUMPAD3             
-        elsif($k =~ /^(num|numeric|keypad)4$/i)    { $key = 0x64; } # VK_NUMPAD4             
-        elsif($k =~ /^(num|numeric|keypad)5$/i)    { $key = 0x65; } # VK_NUMPAD5             
-        elsif($k =~ /^(num|numeric|keypad)6$/i)    { $key = 0x66; } # VK_NUMPAD6             
-        elsif($k =~ /^(num|numeric|keypad)7$/i)    { $key = 0x67; } # VK_NUMPAD7             
-        elsif($k =~ /^(num|numeric|keypad)8$/i)    { $key = 0x68; } # VK_NUMPAD8             
-        elsif($k =~ /^(num|numeric|keypad)9$/i)    { $key = 0x69; } # VK_NUMPAD9             
-        elsif($k =~ /^multiply$/i)                 { $key = 0x6a; } # VK_MULTIPLY            
-        elsif($k =~ /^add$/i)                      { $key = 0x6b; } # VK_ADD                 
-#       elsif($k =~ /^separator$/i)                { $key = 0x6c; } # VK_SEPARATOR           
-        elsif($k =~ /^subtract$/i)                 { $key = 0x6d; } # VK_SUBTRACT            
-        elsif($k =~ /^decimal$/i)                  { $key = 0x6e; } # VK_DECIMAL             
-        elsif($k =~ /^divide$/i)                   { $key = 0x6f; } # VK_DIVIDE              
-        elsif($k =~ /^f1$/i)                       { $key = 0x70; } # VK_F1                  
-        elsif($k =~ /^f2$/i)                       { $key = 0x71; } # VK_F2                  
-        elsif($k =~ /^f3$/i)                       { $key = 0x72; } # VK_F3                  
-        elsif($k =~ /^f4$/i)                       { $key = 0x73; } # VK_F4                  
-        elsif($k =~ /^f5$/i)                       { $key = 0x74; } # VK_F5                  
-        elsif($k =~ /^f6$/i)                       { $key = 0x75; } # VK_F6                  
-        elsif($k =~ /^f7$/i)                       { $key = 0x76; } # VK_F7                  
-        elsif($k =~ /^f8$/i)                       { $key = 0x77; } # VK_F8                  
-        elsif($k =~ /^f9$/i)                       { $key = 0x78; } # VK_F9                  
-        elsif($k =~ /^f10$/i)                      { $key = 0x79; } # VK_F10                 
-        elsif($k =~ /^f11$/i)                      { $key = 0x7a; } # VK_F11                 
-        elsif($k =~ /^f12$/i)                      { $key = 0x7b; } # VK_F12                 
-#       elsif($k =~ /^f13$/i)                      { $key = 0x7c; } # VK_F13                 
-#       elsif($k =~ /^f14$/i)                      { $key = 0x7d; } # VK_F14                 
-#       elsif($k =~ /^f15$/i)                      { $key = 0x7e; } # VK_F15                 
-#       elsif($k =~ /^f16$/i)                      { $key = 0x7f; } # VK_F16                 
-#       elsif($k =~ /^f17$/i)                      { $key = 0x80; } # VK_F17                 
-#       elsif($k =~ /^f18$/i)                      { $key = 0x81; } # VK_F18                 
-#       elsif($k =~ /^f19$/i)                      { $key = 0x82; } # VK_F19                 
-#       elsif($k =~ /^f20$/i)                      { $key = 0x83; } # VK_F20                 
-#       elsif($k =~ /^f21$/i)                      { $key = 0x84; } # VK_F21                 
-#       elsif($k =~ /^f22$/i)                      { $key = 0x85; } # VK_F22                 
-#       elsif($k =~ /^f23$/i)                      { $key = 0x86; } # VK_F23                 
-#       elsif($k =~ /^f24$/i)                      { $key = 0x87; } # VK_F24                 
-        elsif($k =~ /^numlock$/i)                  { $key = 0x90; } # VK_NUMLOCK             
-        elsif($k =~ /^scrolllock$/i)               { $key = 0x91; } # VK_SCROLL              
-                                                 # { $key = 0xa0; } # VK_LSHIFT              
-                                                 # { $key = 0xa1; } # VK_RSHIFT              
-                                                 # { $key = 0xa2; } # VK_LCONTROL            
-                                                 # { $key = 0xa3; } # VK_RCONTROL            
-                                                 # { $key = 0xa4; } # VK_LMENU               
-                                                 # { $key = 0xa5; } # VK_RMENU               
-#       elsif($k =~ /^browserback$/i)              { $key = 0xa6; } # VK_BROWSER_BACK        
-#       elsif($k =~ /^browserforward$/i)           { $key = 0xa7; } # VK_BROWSER_FORWARD     
-#       elsif($k =~ /^browserrefresh$/i)           { $key = 0xa8; } # VK_BROWSER_REFRESH     
-#       elsif($k =~ /^browserstop$/i)              { $key = 0xa9; } # VK_BROWSER_STOP        
-#       elsif($k =~ /^browsersearch$/i)            { $key = 0xaa; } # VK_BROWSER_SEARCH      
-#       elsif($k =~ /^browserfavorites$/i)         { $key = 0xab; } # VK_BROWSER_FAVORITES   
-#       elsif($k =~ /^browserhome$/i)              { $key = 0xac; } # VK_BROWSER_HOME        
-#       elsif($k =~ /^volumemute$/i)               { $key = 0xad; } # VK_VOLUME_MUTE         
-#       elsif($k =~ /^volumedown$/i)               { $key = 0xae; } # VK_VOLUME_UP           
-#       elsif($k =~ /^volumenup$/i)                { $key = 0xaf; } # VK_VOLUME_DOWN         
-#       elsif($k =~ /^medianexttrack$/i)           { $key = 0xb0; } # VK_MEDIA_NEXT_TRACK    
-#       elsif($k =~ /^mediaprevtrack$/i)           { $key = 0xb1; } # VK_MEDIA_PREV_TRACK    
-#       elsif($k =~ /^mediastop$/i)                { $key = 0xb2; } # VK_MEDIA_STOP          
-#       elsif($k =~ /^mediaplaypause$/i)           { $key = 0xb3; } # VK_MEDIA_PLAY_PAUSE    
-#       elsif($k =~ /^launchmail$/i)               { $key = 0xb4; } # VK_LAUNCH_MAIL         
-#       elsif($k =~ /^launchmediaselect$/i)        { $key = 0xb5; } # VK_LAUNCH_MEDIA_SELECT 
-#       elsif($k =~ /^launchapp1$/i)               { $key = 0xb6; } # VK_LAUNCH_APP1         
-#       elsif($k =~ /^launchapp2$/i)               { $key = 0xb7; } # VK_LAUNCH_APP2         
-        elsif($k =~ /^semicolon$/i)                { $key = 0xba; } # VK_OEM_1               
-        elsif($k =~ /^(plus|equal)$/i)             { $key = 0xbb; } # VK_OEM_PLUS            
-        elsif($k =~ /^(comma|lessthan)$/i)         { $key = 0xbc; } # VK_OEM_COMMA           
-        elsif($k =~ /^(minus|underscore)$/i)       { $key = 0xbd; } # VK_OEM_MINUS           
-        elsif($k =~ /^(period|greaterthan)$/i)     { $key = 0xbe; } # VK_OEM_PERIOD          
-        elsif($k =~ /^(slash|question)$/i)         { $key = 0xbf; } # VK_OEM_2               
-        elsif($k =~ /^(acute|tilde)$/i)            { $key = 0xc0; } # VK_OEM_3               
-        elsif($k =~ /^(left|open)brac(e|ket)$/i)   { $key = 0xdb; } # VK_OEM_4               
-        elsif($k =~ /^(backslash|verticalbar)$/i)  { $key = 0xdc; } # VK_OEM_5               
-        elsif($k =~ /^(right|close)brac(e|ket)$/i) { $key = 0xdd; } # VK_OEM_6               
-        elsif($k =~ /^(single|double|)quote$/i)    { $key = 0xde; } # VK_OEM_7               
-#       elsif($k =~ /^unknown$/i)                  { $key = 0xdf; } # VK_OEM_8               
-#       elsif($k =~ /^process$/i)                  { $key = 0xe5; } # VK_PROCESSKEY          
-        elsif($k =~ /^(attn|attention)$/i)         { $key = 0xf6; } # VK_ATTN                
-        elsif($k =~ /^crsel$/i)                    { $key = 0xf7; } # VK_CRSEL               
-        elsif($k =~ /^exsel$/i)                    { $key = 0xf8; } # VK_EXSEL               
-        elsif($k =~ /^(ereof|eraseeof)$/i)         { $key = 0xf9; } # VK_EREOF               
-        elsif($k =~ /^play$/i)                     { $key = 0xfa; } # VK_PLAY                
-        elsif($k =~ /^zoom$/i)                     { $key = 0xfb; } # VK_ZOOM                
-        elsif($k =~ /^noname$/i)                   { $key = 0xfc; } # VK_NONAME              
-        elsif($k =~ /^pa1$/i)                      { $key = 0xfd; } # VK_PA1                 
-        elsif($k =~ /^oem_clear$/i)                { $key = 0xfe; } # VK_OEM_CLEAR           
-        else {$key = 0; print "Key name '$k' unknown\n"; }                                            
+                                                 # { $key = 0x01; } # VK_LBUTTON
+                                                 # { $key = 0x02; } # VK_RBUTTON
+                                                 # { $key = 0x03; } # VK_CANCEL
+                                                 # { $key = 0x04; } # VK_MBUTTON
+           if($k =~ /^backspace$/i)                { $key = 0x08; } # VK_BACK
+        elsif($k =~ /^tab$/i)                      { $key = 0x09; } # VK_TAB
+#       elsif($k =~ /^clear$/i)                    { $key = 0x0c; } # VK_CLEAR
+        elsif($k =~ /^return$/i)                   { $key = 0x0d; } # VK_RETURN
+                                                 # { $key = 0x10; } # VK_SHIFT
+                                                 # { $key = 0x11; } # VK_CONTROL
+                                                 # { $key = 0x12; } # VK_MENU /ALT
+        elsif($k =~ /^pause$/i)                    { $key = 0x13; } # VK_PAUSE
+        elsif($k =~ /^capslock$/i)                 { $key = 0x14; } # VK_CAPITAL
+        elsif($k =~ /^(esc|escape)$/i)             { $key = 0x1b; } # VK_ESCAPE
+        elsif($k =~ /^space$/i)                    { $key = 0x20; } # VK_SPACE
+        elsif($k =~ /^(pgup|pageup)$/i)            { $key = 0x21; } # VK_PRIOR
+        elsif($k =~ /^(pgdn|pagedn|pagedown)$/i)   { $key = 0x22; } # VK_NEXT
+        elsif($k =~ /^end$/i)                      { $key = 0x23; } # VK_END
+        elsif($k =~ /^home$/i)                     { $key = 0x24; } # VK_HOME
+        elsif($k =~ /^left$/i)                     { $key = 0x25; } # VK_LEFT
+        elsif($k =~ /^up$/i)                       { $key = 0x26; } # VK_UP
+        elsif($k =~ /^right$/i)                    { $key = 0x27; } # VK_RIGHT
+        elsif($k =~ /^down$/i)                     { $key = 0x28; } # VK_DOWN
+#       elsif($k =~ /^select$/i)                   { $key = 0x29; } # VK_SELECT
+#       elsif($k =~ /^print$/i)                    { $key = 0x2a; } # VK_PRINT
+#       elsif($k =~ /^execute$/i)                  { $key = 0x2b; } # VK_EXECUTE
+        elsif($k =~ /^(prntscrn|printscreen)$/i)   { $key = 0x2c; } # VK_SNAPSHOT
+        elsif($k =~ /^ins$/i)                      { $key = 0x2d; } # VK_INSERT
+        elsif($k =~ /^del$/i)                      { $key = 0x2e; } # VK_DELETE
+#       elsif($k =~ /^help$/i)                     { $key = 0x2f; } # VK_HELP
+        elsif($k =~ /^[0-9a-z]$/i)                 { $key = ord(uc($k)); }
+                                                 # 0x30-0x39: ASCII 0-9
+                                                 # 0x41-0x5a: ASCII A-Z
+        elsif($k =~ /^left(win|windows)$/i)        { $key = 0x5b; } # VK_LWIN
+        elsif($k =~ /^right(win|windows)$/i)       { $key = 0x5c; } # VK_RWIN
+        elsif($k =~ /^(app|application)$/i)        { $key = 0x5d; } # VK_APPS
+#       elsif($k =~ /^sleep$/i)                    { $key = 0x5e; } # VK_SLEEP
+        elsif($k =~ /^(num|numeric|keypad)0$/i)    { $key = 0x60; } # VK_NUMPAD0
+        elsif($k =~ /^(num|numeric|keypad)1$/i)    { $key = 0x61; } # VK_NUMPAD1
+        elsif($k =~ /^(num|numeric|keypad)2$/i)    { $key = 0x62; } # VK_NUMPAD2
+        elsif($k =~ /^(num|numeric|keypad)3$/i)    { $key = 0x63; } # VK_NUMPAD3
+        elsif($k =~ /^(num|numeric|keypad)4$/i)    { $key = 0x64; } # VK_NUMPAD4
+        elsif($k =~ /^(num|numeric|keypad)5$/i)    { $key = 0x65; } # VK_NUMPAD5
+        elsif($k =~ /^(num|numeric|keypad)6$/i)    { $key = 0x66; } # VK_NUMPAD6
+        elsif($k =~ /^(num|numeric|keypad)7$/i)    { $key = 0x67; } # VK_NUMPAD7
+        elsif($k =~ /^(num|numeric|keypad)8$/i)    { $key = 0x68; } # VK_NUMPAD8
+        elsif($k =~ /^(num|numeric|keypad)9$/i)    { $key = 0x69; } # VK_NUMPAD9
+        elsif($k =~ /^multiply$/i)                 { $key = 0x6a; } # VK_MULTIPLY
+        elsif($k =~ /^add$/i)                      { $key = 0x6b; } # VK_ADD
+#       elsif($k =~ /^separator$/i)                { $key = 0x6c; } # VK_SEPARATOR
+        elsif($k =~ /^subtract$/i)                 { $key = 0x6d; } # VK_SUBTRACT
+        elsif($k =~ /^decimal$/i)                  { $key = 0x6e; } # VK_DECIMAL
+        elsif($k =~ /^divide$/i)                   { $key = 0x6f; } # VK_DIVIDE
+        elsif($k =~ /^f1$/i)                       { $key = 0x70; } # VK_F1
+        elsif($k =~ /^f2$/i)                       { $key = 0x71; } # VK_F2
+        elsif($k =~ /^f3$/i)                       { $key = 0x72; } # VK_F3
+        elsif($k =~ /^f4$/i)                       { $key = 0x73; } # VK_F4
+        elsif($k =~ /^f5$/i)                       { $key = 0x74; } # VK_F5
+        elsif($k =~ /^f6$/i)                       { $key = 0x75; } # VK_F6
+        elsif($k =~ /^f7$/i)                       { $key = 0x76; } # VK_F7
+        elsif($k =~ /^f8$/i)                       { $key = 0x77; } # VK_F8
+        elsif($k =~ /^f9$/i)                       { $key = 0x78; } # VK_F9
+        elsif($k =~ /^f10$/i)                      { $key = 0x79; } # VK_F10
+        elsif($k =~ /^f11$/i)                      { $key = 0x7a; } # VK_F11
+        elsif($k =~ /^f12$/i)                      { $key = 0x7b; } # VK_F12
+#       elsif($k =~ /^f13$/i)                      { $key = 0x7c; } # VK_F13
+#       elsif($k =~ /^f14$/i)                      { $key = 0x7d; } # VK_F14
+#       elsif($k =~ /^f15$/i)                      { $key = 0x7e; } # VK_F15
+#       elsif($k =~ /^f16$/i)                      { $key = 0x7f; } # VK_F16
+#       elsif($k =~ /^f17$/i)                      { $key = 0x80; } # VK_F17
+#       elsif($k =~ /^f18$/i)                      { $key = 0x81; } # VK_F18
+#       elsif($k =~ /^f19$/i)                      { $key = 0x82; } # VK_F19
+#       elsif($k =~ /^f20$/i)                      { $key = 0x83; } # VK_F20
+#       elsif($k =~ /^f21$/i)                      { $key = 0x84; } # VK_F21
+#       elsif($k =~ /^f22$/i)                      { $key = 0x85; } # VK_F22
+#       elsif($k =~ /^f23$/i)                      { $key = 0x86; } # VK_F23
+#       elsif($k =~ /^f24$/i)                      { $key = 0x87; } # VK_F24
+        elsif($k =~ /^numlock$/i)                  { $key = 0x90; } # VK_NUMLOCK
+        elsif($k =~ /^scrolllock$/i)               { $key = 0x91; } # VK_SCROLL
+                                                 # { $key = 0xa0; } # VK_LSHIFT
+                                                 # { $key = 0xa1; } # VK_RSHIFT
+                                                 # { $key = 0xa2; } # VK_LCONTROL
+                                                 # { $key = 0xa3; } # VK_RCONTROL
+                                                 # { $key = 0xa4; } # VK_LMENU
+                                                 # { $key = 0xa5; } # VK_RMENU
+#       elsif($k =~ /^browserback$/i)              { $key = 0xa6; } # VK_BROWSER_BACK
+#       elsif($k =~ /^browserforward$/i)           { $key = 0xa7; } # VK_BROWSER_FORWARD
+#       elsif($k =~ /^browserrefresh$/i)           { $key = 0xa8; } # VK_BROWSER_REFRESH
+#       elsif($k =~ /^browserstop$/i)              { $key = 0xa9; } # VK_BROWSER_STOP
+#       elsif($k =~ /^browsersearch$/i)            { $key = 0xaa; } # VK_BROWSER_SEARCH
+#       elsif($k =~ /^browserfavorites$/i)         { $key = 0xab; } # VK_BROWSER_FAVORITES
+#       elsif($k =~ /^browserhome$/i)              { $key = 0xac; } # VK_BROWSER_HOME
+#       elsif($k =~ /^volumemute$/i)               { $key = 0xad; } # VK_VOLUME_MUTE
+#       elsif($k =~ /^volumedown$/i)               { $key = 0xae; } # VK_VOLUME_UP
+#       elsif($k =~ /^volumenup$/i)                { $key = 0xaf; } # VK_VOLUME_DOWN
+#       elsif($k =~ /^medianexttrack$/i)           { $key = 0xb0; } # VK_MEDIA_NEXT_TRACK
+#       elsif($k =~ /^mediaprevtrack$/i)           { $key = 0xb1; } # VK_MEDIA_PREV_TRACK
+#       elsif($k =~ /^mediastop$/i)                { $key = 0xb2; } # VK_MEDIA_STOP
+#       elsif($k =~ /^mediaplaypause$/i)           { $key = 0xb3; } # VK_MEDIA_PLAY_PAUSE
+#       elsif($k =~ /^launchmail$/i)               { $key = 0xb4; } # VK_LAUNCH_MAIL
+#       elsif($k =~ /^launchmediaselect$/i)        { $key = 0xb5; } # VK_LAUNCH_MEDIA_SELECT
+#       elsif($k =~ /^launchapp1$/i)               { $key = 0xb6; } # VK_LAUNCH_APP1
+#       elsif($k =~ /^launchapp2$/i)               { $key = 0xb7; } # VK_LAUNCH_APP2
+        elsif($k =~ /^semicolon$/i)                { $key = 0xba; } # VK_OEM_1
+        elsif($k =~ /^(plus|equal)$/i)             { $key = 0xbb; } # VK_OEM_PLUS
+        elsif($k =~ /^(comma|lessthan)$/i)         { $key = 0xbc; } # VK_OEM_COMMA
+        elsif($k =~ /^(minus|underscore)$/i)       { $key = 0xbd; } # VK_OEM_MINUS
+        elsif($k =~ /^(period|greaterthan)$/i)     { $key = 0xbe; } # VK_OEM_PERIOD
+        elsif($k =~ /^(slash|question)$/i)         { $key = 0xbf; } # VK_OEM_2
+        elsif($k =~ /^(acute|tilde)$/i)            { $key = 0xc0; } # VK_OEM_3
+        elsif($k =~ /^(left|open)brac(e|ket)$/i)   { $key = 0xdb; } # VK_OEM_4
+        elsif($k =~ /^(backslash|verticalbar)$/i)  { $key = 0xdc; } # VK_OEM_5
+        elsif($k =~ /^(right|close)brac(e|ket)$/i) { $key = 0xdd; } # VK_OEM_6
+        elsif($k =~ /^(single|double|)quote$/i)    { $key = 0xde; } # VK_OEM_7
+#       elsif($k =~ /^unknown$/i)                  { $key = 0xdf; } # VK_OEM_8
+#       elsif($k =~ /^process$/i)                  { $key = 0xe5; } # VK_PROCESSKEY
+        elsif($k =~ /^(attn|attention)$/i)         { $key = 0xf6; } # VK_ATTN
+        elsif($k =~ /^crsel$/i)                    { $key = 0xf7; } # VK_CRSEL
+        elsif($k =~ /^exsel$/i)                    { $key = 0xf8; } # VK_EXSEL
+        elsif($k =~ /^(ereof|eraseeof)$/i)         { $key = 0xf9; } # VK_EREOF
+        elsif($k =~ /^play$/i)                     { $key = 0xfa; } # VK_PLAY
+        elsif($k =~ /^zoom$/i)                     { $key = 0xfb; } # VK_ZOOM
+        elsif($k =~ /^noname$/i)                   { $key = 0xfc; } # VK_NONAME
+        elsif($k =~ /^pa1$/i)                      { $key = 0xfd; } # VK_PA1
+        elsif($k =~ /^oem_clear$/i)                { $key = 0xfe; } # VK_OEM_CLEAR
+        else {$key = 0; print "Key name '$k' unknown\n"; }
 
         if ($key) {
             my $id = $Win32::GUI::AcceleratorCounter++;
@@ -3262,7 +3275,7 @@
             delete $oself->{$key};
         }
       }
-      
+
       Win32::GUI::DestroyWindow($oself->{-handle}) if exists $oself->{-handle};
       undef $oself;
       untie %$self;
--- Win32-GUI-1.01_03-cygwin/GUI.xs.orig	2005-06-30 23:36:16.000000000 +0100
+++ Win32-GUI-1.01_03-cygwin/GUI.xs	2005-07-04 14:33:52.211250000 +0100
@@ -42,11 +42,11 @@
 
     ##########################################################################
     # @)METHOD:GetAsyncKeyState(key)
-    # Retrieve the status of the specified virtual key. The status 
+    # Retrieve the status of the specified virtual key. The status
     # specifies whether the key is up, down, or toggled (on, off--
-    # alternating each time the key is pressed). 
+    # alternating each time the key is pressed).
     #
-    # keyCode -- If a..z0..9, use the ASCII code. Otherwise, use 
+    # keyCode -- If a..z0..9, use the ASCII code. Otherwise, use
     # a virtual key code. Example: VK_SHIFT
     #
     # Return 1 if the key is depressed, 0 if it's not.
@@ -58,18 +58,18 @@
     RETVAL = GetAsyncKeyState(key) & 1;
 OUTPUT:
     RETVAL
-   
+
     ##########################################################################
     # (@)METHOD:GetKeyboardState()
-    # Return array ref with the status of the 256 virtual keys. 
+    # Return array ref with the status of the 256 virtual keys.
     #
-    # The index in the array is the virtual key code. If the value 
+    # The index in the array is the virtual key code. If the value
     # is true, that key is depressed.
     #
-    # Example: 
+    # Example:
     #   $key=Win32::GUI::GetKeyboardState;
     #   print 'CTRL is down' if $key->[0x11];
-    
+
 AV*
 GetKeyboardState()
 PREINIT:
@@ -267,7 +267,7 @@
 PPCODE:
     WNDCLASSEX wcx;
     HINSTANCE hinstance;
-    
+
     char * option;
     int i, next_i;
 
@@ -356,7 +356,7 @@
 
     // Register the window class.
     if(RegisterClassEx(&wcx)) {
-        
+
         if (DefClassProc != NULL && DefClassProc != wcx.lpfnWndProc)
             SetDefClassProc (NOTXSCALL wcx.lpszClassName, DefClassProc);
 
@@ -369,7 +369,7 @@
 
             XSRETURN_YES;
         }
-    }    
+    }
     XSRETURN_NO;
 
      ##########################################################################
@@ -520,7 +520,7 @@
     perlcs.iMinWidth = -1;
     perlcs.iMaxWidth = -1;
     perlcs.iMinHeight = -1;
-    perlcs.iMaxHeight = -1;    
+    perlcs.iMaxHeight = -1;
 
     // #### fill the default parameters for classes
     OnPreCreate[perlcs.iClass](NOTXSCALL &perlcs);
@@ -555,7 +555,7 @@
     }
 
     // #### default styles for all controls
-    if(perlcs.iClass != WIN32__GUI__WINDOW && 
+    if(perlcs.iClass != WIN32__GUI__WINDOW &&
        perlcs.iClass != WIN32__GUI__DIALOG &&
        perlcs.iClass != WIN32__GUI__MDIFRAME &&
        perlcs.iClass != WIN32__GUI__MDICHILD) {
@@ -741,7 +741,7 @@
             LPPERLWIN32GUI_USERDATA parentud;
             parentud = (LPPERLWIN32GUI_USERDATA) GetWindowLong(perlcs.cs.hwndParent, GWL_USERDATA);
             if( ValidUserData(parentud) ) {
-                if(parentud->iClass != WIN32__GUI__WINDOW && 
+                if(parentud->iClass != WIN32__GUI__WINDOW &&
                    parentud->iClass != WIN32__GUI__DIALOG &&
                    parentud->iClass != WIN32__GUI__MDIFRAME &&
                    parentud->iClass != WIN32__GUI__MDICLIENT &&
@@ -817,7 +817,7 @@
         ParseWindowOptions(NOTXSCALL sp, mark, ax, items, 1, &perlcs);
 
         // #### default styles for all controls
-        if(perlcs.iClass != WIN32__GUI__WINDOW && 
+        if(perlcs.iClass != WIN32__GUI__WINDOW &&
            perlcs.iClass != WIN32__GUI__DIALOG &&
            perlcs.iClass != WIN32__GUI__MDIFRAME &&
            perlcs.iClass != WIN32__GUI__MDICHILD) {
@@ -857,7 +857,7 @@
         perlud->hBackgroundBrush = perlcs.hBackgroundBrush;
         perlud->hvEvents    = perlcs.hvEvents;
         perlud->dwEventMask = perlcs.dwEventMask;
-       
+
         if(perlcs.cs.lpszName != NULL)
             SetWindowText(handle, perlcs.cs.lpszName);
 
@@ -1088,7 +1088,7 @@
     // Find is parent window if any or use ActiveWindow
     parent = GetParent(handle);
     if (parent == NULL) {
-        parent = GetActiveWindow(); 
+        parent = GetActiveWindow();
     }
 
     // Disable parent window or all top window
@@ -1110,7 +1110,7 @@
         SAVETMPS;
 
         stayhere = GetMessage(&msg, NULL, 0, 0);
- 
+
         if(msg.message == WM_EXITLOOP || msg.message == WM_QUIT) {
             stayhere = 0;
             msg.wParam = (WPARAM) 0;  // Don't return -1 for a DoModal
@@ -1162,7 +1162,7 @@
 
     // Hide DialogBox
     ShowWindow(handle, SW_HIDE);
-    
+
     // Active parent
     SetActiveWindow(parent);
     // UnSet ISMODAL flag
@@ -1244,7 +1244,7 @@
 
     ###########################################################################
     # (@)METHOD:ScrollRange(scrollbar,[min, max])
-    # Sets / Gets range for a window scrollbar (if enabled). 
+    # Sets / Gets range for a window scrollbar (if enabled).
     # B<scrollbar> argument should be set as follows:
     #   0 : Horizontal scrollbar
     #   1 : Vertical scrollbar
@@ -1277,7 +1277,7 @@
 
     ###########################################################################
     # (@)METHOD:ScrollPage(scrollbar,[pagesize])
-    # Sets / Gets page size of a window scrollbar (if enabled). 
+    # Sets / Gets page size of a window scrollbar (if enabled).
     # B<scrollbar> argument should be set as follows:
     #   0 : Horizontal scrollbar
     #   1 : Vertical scrollbar
@@ -1305,7 +1305,7 @@
 
     ###########################################################################
     # (@)METHOD:ScrollPos(scrollbar,[pos])
-    # Sets / Gets position of a window scrollbar (if enabled). 
+    # Sets / Gets position of a window scrollbar (if enabled).
     # B<scrollbar> argument should be set as follows:
     #   0 : Horizontal scrollbar
     #   1 : Vertical scrollbar
@@ -1363,13 +1363,13 @@
     #  32644 IDC_SIZEWE       Double-pointed arrow pointing west and east
     #  32516 IDC_UPARROW      Vertical arrow
     #  32514 IDC_WAIT         Hourglass
-    # 
+    #
     #On success returns a Win32::GUI::Cursor object, on failure undef.
     #
     #Example:
     #
     #my $hourglass=Win32::GUI::LoadCursor(32514);
-    #    
+    #
 void
 LoadCursor(ID)
     long ID
@@ -1379,11 +1379,11 @@
     cursor = LoadCursor(NULL, MAKEINTRESOURCE(ID));
     if (cursor== NULL) XSRETURN_UNDEF;
     XPUSHs(CreateObjectWithHandle(NOTXSCALL "Win32::GUI::Cursor", (HWND) cursor));
-    
+
      ##########################################################################
      # (@)METHOD:LoadString(ID)
-     # The LoadString method loads a string resource from the executable file 
-     
+     # The LoadString method loads a string resource from the executable file
+
 LPTSTR
 LoadString(uID)
     UINT uID
@@ -1399,7 +1399,7 @@
     }
 OUTPUT:
     RETVAL
-    
+
 
     ###########################################################################
     # (@)INTERNAL:LoadImage(FILENAME, [TYPE, X, Y, FLAGS])
@@ -1675,7 +1675,7 @@
 
     ###########################################################################
     # (@)METHOD:Show([COMMAND=SW_SHOWNORMAL])
-    # Shows a window (or change its showing state to B<COMMAND>); 
+    # Shows a window (or change its showing state to B<COMMAND>);
     #
     # Available B<COMMAND> are:
     #
@@ -1730,13 +1730,13 @@
 
     ###########################################################################
     # (@)METHOD:SetWindowRgn(region,flag)
-    # The SetWindowRgn method sets the window region of a window. The window region determines the area 
-    # within the window where the system permits drawing. The system does not display any portion of a window 
-    # that lies outside of the window region 
-    #
-    # flag : Specifies whether the system redraws the window after setting the window region. If flag is TRUE, 
-    # the system does so; otherwise, it does not. 
-    # Typically, you set flag to TRUE if the window is visible. 
+    # The SetWindowRgn method sets the window region of a window. The window region determines the area
+    # within the window where the system permits drawing. The system does not display any portion of a window
+    # that lies outside of the window region
+    #
+    # flag : Specifies whether the system redraws the window after setting the window region. If flag is TRUE,
+    # the system does so; otherwise, it does not.
+    # Typically, you set flag to TRUE if the window is visible.
 BOOL
 SetWindowRgn(handle, region, flag=1)
     HWND handle
@@ -1796,12 +1796,12 @@
 
     ###########################################################################
     # (@)METHOD:LockWindowUpdate(flag)
-    # The LockWindowUpdate method disables or enables drawing in the specified window. Only one window 
-    # can be locked at a time. 
+    # The LockWindowUpdate method disables or enables drawing in the specified window. Only one window
+    # can be locked at a time.
     #
     # If an application with a locked window (or any locked child windows) calls the GetDC function,
-    # the called function returns a device context with a visible region that is empty. This will 
-    # occur until the application unlocks the window by calling LockWindowUpdate method specifying a 
+    # the called function returns a device context with a visible region that is empty. This will
+    # occur until the application unlocks the window by calling LockWindowUpdate method specifying a
     # value for the flag.
     # Example:
     # $win->LockWindowUpdate;     #Locks window
@@ -1814,11 +1814,11 @@
     RETVAL = LockWindowUpdate(flag == 0 ? handle : NULL);
 OUTPUT:
     RETVAL
-    
+
 
     ###########################################################################
     # (@)METHOD:InvalidateRect(...)
-    # Forces a refresh of a window, or a rectangle of it. 
+    # Forces a refresh of a window, or a rectangle of it.
     #
     # The parameters can be B<(FLAG)> for the whole area of the window, or B<(LEFT, TOP, RIGHT, BOTTOM,
     # [FLAG])> to specify a rectangle. If the B<FLAG> parameter is set to TRUE, the
@@ -1870,7 +1870,7 @@
     ###########################################################################
     # (@)METHOD:GetMessage([MIN=0, MAX=0])
     # Retrieves a message sent to the window, optionally considering only
-    # messages identifiers in the range B<MIN..MAX>. 
+    # messages identifiers in the range B<MIN..MAX>.
     #
     # If a message is found, the function returns a 7 elements array containing:
     #
@@ -1940,9 +1940,9 @@
 
     ###########################################################################
     # (@)METHOD:WaitMessage()
-    # The WaitMessage function yields control to other threads when a thread 
-    # has no other messages in its message queue. The WaitMessage function suspends 
-    # the thread and does not return until a new message is placed in the thread's 
+    # The WaitMessage function yields control to other threads when a thread
+    # has no other messages in its message queue. The WaitMessage function suspends
+    # the thread and does not return until a new message is placed in the thread's
     # message queue.
 BOOL
 WaitMessage()
@@ -1954,7 +1954,7 @@
     ###########################################################################
     # (@)METHOD:SendMessageTimeout(MSG, WPARAM, LPARAM, [FLAGS=SMTO_NORMAL], TIMEOUT)
     # Sends a message to a window and wait for it to be processed or until the
-    # specified B<TIMEOUT> (number of milliseconds) elapses. 
+    # specified B<TIMEOUT> (number of milliseconds) elapses.
     #
     # Returns the result code of the processed message or undef on errors.
     #
@@ -1962,7 +1962,7 @@
     # then the window timed out processing the message.
     #
     # The B<FLAGS> parameter is optional, possible values are:
-    #  0 : SMTO_NORMAL 
+    #  0 : SMTO_NORMAL
     #      The calling thread can process other requests while waiting; this is the default setting.
     #  1 : SMTO_BLOCK
     #      The calling thread does not process other requests.
@@ -2287,7 +2287,7 @@
 SetIcon(handle, icon, type=ICON_SMALL)
     HWND   handle
     HICON  icon
-    WPARAM type    
+    WPARAM type
 CODE:
     if (items > 2)
         RETVAL = SendMessage(handle, WM_SETICON, type, (LPARAM) icon);
@@ -2398,9 +2398,6 @@
 PREINIT:
     WINDOWINFO pwi;
 PPCODE:
-#if defined(_MSC_VER) && (_MSC_VER <= 1200) && (WINVER < 0x0500)
-    XSRETURN_UNDEF;
-#else
     pwi.cbSize = sizeof(WINDOWINFO);
     if(GetWindowInfo(handle, &pwi)) {
         EXTEND(SP, 4);
@@ -2413,7 +2410,6 @@
     else {
         XSRETURN_UNDEF;
     }
-#endif
 
     ###########################################################################
     # (@)METHOD:GetWindowRect()
@@ -2694,7 +2690,7 @@
     XST_mIV(0, myPt.x);
     XST_mIV(1, myPt.y);
     XSRETURN(2);
-    
+
     ###########################################################################
     # (@)METHOD:ScaleWidth()
     # Returns the windows client area width.
@@ -3018,7 +3014,7 @@
 
     ###########################################################################
     # (@)METHOD:GetCapture()
-    # Returns the handle of the window that has the captured the mouse. 
+    # Returns the handle of the window that has the captured the mouse.
     # If no window has captured the mouse zero is returned.
 HWND
 GetCapture()
@@ -3026,7 +3022,7 @@
     RETVAL = GetCapture();
 OUTPUT:
     RETVAL
-    
+
     ###########################################################################
     # (@)METHOD:ReleaseCapture()
     # Releases the mouse capture.
@@ -3044,7 +3040,7 @@
     #
     # B<Operation>. A string that specifies the action to be performed. The set of available action verbs depends
     # on the particular file or folder. Generally, the actions available from an object's shortcut menu are
-    # available verbs. 
+    # available verbs.
     #   edit     - Launches an editor and opens the document for editing. If File is not a document file,
     #              the function will fail.
     #   explore  - Explores the folder specified by File.
@@ -3070,7 +3066,7 @@
     #
     # B<ShowCmd>. Flags that speciow an application is to be displayed when it is opened. If File specifies a
     # document file, the flag is simply passed to the associated application. It is up to the application to
-    # decide how to handle it.   
+    # decide how to handle it.
     #
     #   0  SW_HIDE            Hides the window and activates another window.
     #   3  SW_MAXIMIZE        Maximizes the specified window.
@@ -3092,24 +3088,24 @@
     #                         when displaying the window for the first time.
     #
     # Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise.
-    # The following table lists the error values. 
+    # The following table lists the error values.
     #
-    #   0  The operating system is out of memory or resources. 
-    #   3  ERROR_PATH_NOT_FOUND   The specified path was not found. 
-    #   11 ERROR_BAD_FORMAT       The .exe file is invalid (non-Microsoft Win32 .exe or error in .exe image). 
-    #   5  SE_ERR_ACCESSDENIED    The operating system denied access to the specified file. 
-    #   27 SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or invalid. 
+    #   0  The operating system is out of memory or resources.
+    #   3  ERROR_PATH_NOT_FOUND   The specified path was not found.
+    #   11 ERROR_BAD_FORMAT       The .exe file is invalid (non-Microsoft Win32 .exe or error in .exe image).
+    #   5  SE_ERR_ACCESSDENIED    The operating system denied access to the specified file.
+    #   27 SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or invalid.
     #   30 SE_ERR_DDEBUSY         The Dynamic Data Exchange (DDE) transaction could not be completed because
-    #                             other DDE transactions were being processed. 
-    #   29 SE_ERR_DDEFAIL         The DDE transaction failed. 
-    #   28 SE_ERR_DDETIMEOUT      The DDE transaction could not be completed because the request timed out. 
-    #   32 SE_ERR_DLLNOTFOUND     The specified dynamic-link library (DLL) was not found. 
-    #   2  SE_ERR_FNF             The specified file was not found. 
+    #                             other DDE transactions were being processed.
+    #   29 SE_ERR_DDEFAIL         The DDE transaction failed.
+    #   28 SE_ERR_DDETIMEOUT      The DDE transaction could not be completed because the request timed out.
+    #   32 SE_ERR_DLLNOTFOUND     The specified dynamic-link library (DLL) was not found.
+    #   2  SE_ERR_FNF             The specified file was not found.
     #   31 SE_ERR_NOASSOC         There is no application associated with the given file name extension. This
-    #                             error will also be returned if you attempt to print a file that is not printable. 
-    #   8  SE_ERR_OOM             There was not enough memory to complete the operation. 
-    #   3  SE_ERR_PNF             The specified path was not found. 
-    #   26 SE_ERR_SHARE           A sharing violation occurred. 
+    #                             error will also be returned if you attempt to print a file that is not printable.
+    #   8  SE_ERR_OOM             There was not enough memory to complete the operation.
+    #   3  SE_ERR_PNF             The specified path was not found.
+    #   26 SE_ERR_SHARE           A sharing violation occurred.
     #
     # Examples:
     #
@@ -3130,7 +3126,7 @@
     RETVAL = (int) ShellExecute(window,operation,file,parameters,directory,showcmd);
 OUTPUT:
     RETVAL
-    
+
     ###########################################################################
     # (@)METHOD:GetWindowThreadProcessId()
     # Returns a two elements array containing the thread and the process
@@ -3267,7 +3263,7 @@
     #         my ($self, $message, $wParam, $lParam) = @_;
     #
     #         # Process messages you are interested in
-    #         
+    #
     #         return;
     #     }
     #
@@ -3409,6 +3405,8 @@
     UINT id
 CODE:
     RETVAL = KillTimer(handle, id);
+    # TODO: destroy the parent -timers id and -name
+    # sv_bless(handle, gv_stashpv("Win32::GUI::Window", 0));
 OUTPUT:
     RETVAL
 
@@ -3573,7 +3571,7 @@
 
     ###########################################################################
     # (@)METHOD:PlayWinMetaFile(FILENAME)
-    # Displays the picture stored in the specified enhanced-format metafile. 
+    # Displays the picture stored in the specified enhanced-format metafile.
 int
 PlayWinMetaFile(handle,filename)
     HWND handle
@@ -3657,7 +3655,7 @@
 
     ###########################################################################
     # (@)METHOD:CloseEnhMetaFile(HANDLE)
-    # Closes an enhanced-metafile device context and returns a handle that identifies an enhanced-format metafile. 
+    # Closes an enhanced-metafile device context and returns a handle that identifies an enhanced-format metafile.
 HENHMETAFILE
 CloseEnhMetaFile(hdc)
     HDC hdc
@@ -3669,7 +3667,7 @@
 
     ###########################################################################
     # (@)METHOD:DeleteEnhMetaFile(HANDLE)
-    # Deletes an enhanced-format metafile or an enhanced-format metafile handle. 
+    # Deletes an enhanced-format metafile or an enhanced-format metafile handle.
 BOOL
 DeleteEnhMetaFile(hmeta)
     HENHMETAFILE hmeta
@@ -4244,7 +4242,7 @@
     }
     SvREFCNT_dec((SV*)ary);
     XSRETURN(i);
-  
+
     ###########################################################################
     # (@)METHOD:GetSystemMetrics(INDEX)
     # Retrieves various system metrics (dimensions of display elements) and
@@ -4345,16 +4343,16 @@
     ###########################################################################
     # (@)METHOD:MessageBeep([TYPE=MB_OK])
     # Plays a sound.
-    # 
+    #
     # B<TYPE> specifies the sound type :
     #  MB_OK : Play SystemDefault sound.
     #  MB_ICONASTERISK : Play SystemAsterisk sound.
     #  MB_ICONEXCLAMATION : Play SystemExclamation sound.
     #  MB_ICONHAND : Play SystemHand sound.
     #  MB_ICONQUESTION : Play SystemQuestion sound.
-    #  0xFFFFFFFF Play Standard beep using the computer speaker 
+    #  0xFFFFFFFF Play Standard beep using the computer speaker
 
-BOOL 
+BOOL
 MessageBeep(type=MB_OK)
     UINT type
 CODE:
@@ -4388,7 +4386,7 @@
     #      period (.).
     #  -defaultfilter => NUMBER
     #      Specifies the index of the currently selected filter in the File Types control.
-    #      The first pair of strings has an index value of 0, the second pair 1, and so on.    
+    #      The first pair of strings has an index value of 0, the second pair 1, and so on.
     #  -createprompt => 0/1 (default 0)
     #      If the user specifies a file that does not exist, this flag causes the dialog box
     #      to prompt the user for permission to create the file. If the user chooses to create
@@ -4534,7 +4532,7 @@
         }
     }
 
-    
+
     fname = (char *) safemalloc(fnlen);
     fname[0] = 0;
     if(fname_in  &&  fnlen > strlen(fname_in)) {
@@ -5226,7 +5224,7 @@
         hDisplay = CreateDC("DISPLAY", NULL, NULL, NULL);
         lf.lfHeight = -MulDiv(lf.lfHeight, 72, GetDeviceCaps(hDisplay, LOGPIXELSY));
         DeleteDC(hDisplay);
- 
+
         EXTEND(SP, 18);
         XST_mPV( 0, "-name");
         XST_mPV( 1, lf.lfFaceName);
@@ -5286,7 +5284,7 @@
     ###########################################################################
     # (@)METHOD:GetStockObject(OBJECT)
     # Returns the handle of the specified predefined system object (pen, brush
-    # or font). 
+    # or font).
     #
     # B<OBJECT> can have one of the following values:
     #   0 WHITE_BRUSH
--- Win32-GUI-1.01_03-cygwin/GUI_MessageLoops.cpp.orig	2005-06-30 23:36:22.000000000 +0100
+++ Win32-GUI-1.01_03-cygwin/GUI_MessageLoops.cpp	2005-07-01 11:25:19.805000000 +0100
@@ -30,9 +30,6 @@
 
         perlud = (LPPERLWIN32GUI_USERDATA) GetWindowLong((HWND) hwnd, GWL_USERDATA);
         if(perlud && (perlud->dwPlStyle & PERLWIN32GUI_FLICKERFREE)) {
-#if defined(_MSC_VER) && (_MSC_VER <= 1200) && (WINVER < 0x0500)
-            return (LRESULT) 0;
-#else
             WINDOWINFO pwi;
             RECT cr;
             pwi.cbSize = sizeof(WINDOWINFO);
@@ -73,7 +70,6 @@
             DeleteDC(hdc2);
             ReleaseDC(hwnd, hdc);
             return (LRESULT) 0;
-#endif
         }
         break;
     case WM_ERASEBKGND:
--- Win32-GUI-1.01_03-cygwin/t/01_basic.t.orig	2005-07-04 14:08:35.680000000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/01_basic.t	2005-07-04 14:08:35.664375000 +0100
@@ -1,17 +1,9 @@
 #!perl -w
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
+BEGIN { $| = 1 }
 
 use strict;
-use vars qw( $loaded $clip $actual );
+use Test::Simple tests => 1;
 
-######################### We start with some black magic to print on failure.
-
-BEGIN { $| = 1; print "1..1\n"; }
-END {print "not ok 1\n" unless $loaded;}
 use Win32::GUI;
-$loaded = 1;
-print "ok 1\n";
-
-######################### End of black magic.
+ok($Win32::GUI::VERSION);
 
--- Win32-GUI-1.01_03-cygwin/t/02_window.t.orig	2005-07-04 14:08:35.711250000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/02_window.t	2005-07-04 14:08:35.695625000 +0100
@@ -1,19 +1,10 @@
 #!perl -w
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
+BEGIN { $| = 1 }
 
 use strict;
-use vars qw( $loaded $clip $actual );
+use Test::Simple tests => 8;
 
-######################### We start with some black magic to print on failure.
-
-BEGIN { $| = 1; print "1..9\n"; }
-END {print "not ok 1\n" unless $loaded;}
 use Win32::GUI;
-$loaded = 1;
-print "ok 1\n";
-
-######################### End of black magic.
 
 my $W = new Win32::GUI::Window(
     -name => "TestWindow",
@@ -21,30 +12,20 @@
     -size => [100, 100],
     -text => "TestWindow",
 );
-print ((defined $W and ref($W) =~ /Win32::GUI::Window/) ? "" : "not ");
-print "ok 2\n";
-
-print (($W->Left == 0) ? "" : "not ");
-print "ok 3\n";
-
-print (($W->Top == 0) ? "" : "not ");
-print "ok 4\n";
+ok(defined $W and ref($W) =~ /Win32::GUI::Window/);
+ok($W->Left == 0);
+ok($W->Top == 0);
 
 $W->Left(100);
-print (($W->Left == 100) ? "" : "not ");
-print "ok 5\n";
+ok($W->Left == 100);
 
 $W->Top(100);
-print (($W->Top == 100) ? "" : "not ");
-print "ok 6\n";
+ok($W->Top == 100);
 
 $W->Move(0, 0);
-print (($W->Left == 0 && $W->Top == 0) ? "" : "not ");
-print "ok 7\n";
+ok($W->Left == 0 && $W->Top == 0);
 
-print (($W->Text eq "TestWindow") ? "" : "not ");
-print "ok 8\n";
+ok($W->Text eq "TestWindow");
 
 $W->Text("TestChanged");
-print (($W->Text eq "TestChanged") ? "" : "not ");
-print "ok 9\n";
+ok($W->Text eq "TestChanged");
--- Win32-GUI-1.01_03-cygwin/t/03_button.t.orig	2005-07-04 14:08:35.758125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/03_button.t	2005-07-04 14:08:35.742500000 +0100
@@ -1,19 +1,10 @@
 #!perl -w
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
+BEGIN { $| = 1 }
 
 use strict;
-use vars qw( $loaded $clip $actual );
+use Test::Simple tests => 9;
 
-######################### We start with some black magic to print on failure.
-
-BEGIN { $| = 1; print "1..10\n"; }
-END {print "not ok 1\n" unless $loaded;}
 use Win32::GUI;
-$loaded = 1;
-print "ok 1\n";
-
-######################### End of black magic.
 
 my $W = new Win32::GUI::Window(
     -name => "TestWindow",
@@ -21,39 +12,26 @@
     -size => [100, 100],
     -text => "TestWindow",
 );
-print ((defined $W) ? "" : "not ");
-print "ok 2\n";
+ok(defined $W);
 
 my $B = $W->AddButton(
     -name => "TestButton",
     -pos  => [  0,   0],
     -text => "TestButton",
 );
+ok(defined $B and ref($B) =~ /Win32::GUI::Button/);
+ok(defined $W->{TestButton});
+ok(defined $W->TestButton);
 
-print ((defined $B and ref($B) =~ /Win32::GUI::Button/) ? "" : "not ");
-print "ok 3\n";
-
-print ((defined $W->{TestButton}) ? "" : "not ");
-print "ok 4\n";
-
-print ((defined $W->TestButton) ? "" : "not ");
-print "ok 5\n";
-
-print (($B->Left == 0) ? "" : "not ");
-print "ok 6\n";
-
-print (($B->Top == 0) ? "" : "not ");
-print "ok 7\n";
+ok($B->Left == 0);
+ok($B->Top == 0);
 
 $W->TestButton->Left(100);
-print (($W->TestButton->Left == 100) ? "" : "not ");
-print "ok 8\n";
+ok($W->TestButton->Left == 100);
 
 $W->Top(100);
-print (($W->Top == 100) ? "" : "not ");
-print "ok 9\n";
+ok($W->Top == 100);
 
 $W->Move(0, 0);
-print (($W->Left == 0 && $W->Top == 0) ? "" : "not ");
-print "ok 10\n";
+ok($W->Left == 0 && $W->Top == 0);
 
--- Win32-GUI-1.01_03-cygwin/t/04_cov.t.orig	2005-07-04 14:53:38.008125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/04_cov.t	2005-07-04 14:08:35.789375000 +0100
@@ -0,0 +1,65 @@
+#!perl -w
+BEGIN { $| = 1 }
+# coverage of most Add$Ctrl, new $Ctrl methods and DESTROY
+
+use strict;
+use Test::More qw(no_plan);
+
+use Win32::GUI;
+
+my $W = new Win32::GUI::Window(
+    -name => "TestWindow",
+    -pos  => [  0,   0],
+    -size => [800, 600],
+    -text => "TestWindow",
+);
+ok(defined $W and ref($W) =~ /Win32::GUI::Window/);
+
+my @ControlsAdd =
+  qw/Animation
+     Button Checkbox Combobox ComboboxEx
+     DateTime Graphic
+     Groupbox Header Label
+     ListView Listbox
+     Menu MonthCal NotifyIcon
+     ProgressBar RadioButton Rebar
+     RichEdit Slider Splitter StatusBar
+     TabStrip Textfield Toolbar
+     Trackbar TreeView UpDown/;
+
+# TODO: Win32::GUI::MDIFrame->Add...
+# MDIClient, ...
+
+# Need special tests:
+my @ControlsNewSpecial =
+  qw(AcceleratorTable ImageList Region Icon
+     MenuButton MenuItem
+     Brush Cursor DC DialogBox Font
+     Header Label Menu MDIChild
+     MDIClient MDIFrame
+     MonthCal NotifyIcon Pen
+     Timer Window);
+
+for my $ctrl (@ControlsAdd) {
+  no strict 'refs';
+  my $method = "Add".$ctrl;
+  my $name = "Test".$ctrl;
+  my $C = $W->$method(-name => $name);
+  ok((defined $C and ref($C) eq "Win32::GUI::".$ctrl), "$method => Win32::GUI::$ctrl");
+  ok(defined $W->{$name}, "-name $name") unless $ctrl =~ /(Menu|Timer)/;
+  $C->DESTROY();
+  ok(!defined $W->{$name}, "$name->DESTROY()") unless $ctrl eq 'NotifyIcon';
+}
+
+# The same ctrls: requiring $W (PARENT) as first arg:
+for my $ctrl (@ControlsAdd) {
+  no strict 'refs';
+  next if $ctrl eq 'Menu';
+  my $method = "Win32::GUI::".$ctrl;
+  my $name = "Test".$ctrl;
+  my $C = new $method($W, -name => $name);
+  ok((defined $C and ref($C) eq $method), "new $method(\$W)");
+  ok(defined $W->{$name}, "-name $name");
+  $C->DESTROY() if $C;
+  ok(!defined $W->{$name}, "$name->DESTROY()") unless $ctrl eq 'NotifyIcon';
+}
--- Win32-GUI-1.01_03-cygwin/t/05_AcceleratorTable.t.orig	2005-07-04 14:53:38.008125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/05_AcceleratorTable.t	2005-07-04 14:08:35.820625000 +0100
@@ -0,0 +1,27 @@
+#!perl -w
+BEGIN { $| = 1 }
+
+use strict;
+use Test::More tests => 3;
+
+use Win32::GUI;
+
+my $W = new Win32::GUI::Window(
+    -name => "TestWindow",
+    -pos  => [  0,   0],
+    -size => [100, 100],
+    -text => "TestWindow",
+);
+ok(defined $W);
+
+my $ctrl = "AcceleratorTable";
+my $C = new Win32::GUI::AcceleratorTable(
+         "Ctrl-X"       => "Close",
+         "Shift-N"      => "New",
+         "Ctrl-Alt-Del" => "Reboot",
+         "Shift-A"      => sub { print "Hello\n"; },
+    );
+ok((defined $C and ref($C) eq "Win32::GUI::".$ctrl), "new Win32::GUI::".$ctrl);
+$C->DESTROY() if $C;
+ok(!defined $W->{"Test".$ctrl}, "Test".$ctrl."->DESTROY");
+
--- Win32-GUI-1.01_03-cygwin/t/05_Menu.t.orig	2005-07-04 14:53:38.008125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/05_Menu.t	2005-07-04 14:08:35.851875000 +0100
@@ -0,0 +1,27 @@
+#!perl -w
+BEGIN { $| = 1 }
+
+use strict;
+use Test::More tests => 3;
+
+use Win32::GUI;
+
+my $W = new Win32::GUI::Window(
+    -name => "TestWindow",
+    -pos  => [  0,   0],
+    -size => [100, 100],
+    -text => "TestWindow",
+);
+ok(defined $W);
+
+my $ctrl = "AcceleratorTable";
+my $C = new Win32::GUI::AcceleratorTable(
+         "Ctrl-X"       => "Close",
+         "Shift-N"      => "New",
+         "Ctrl-Alt-Del" => "Reboot",
+         "Shift-A"      => sub { print "Hello\n"; },
+    );
+ok((defined $C and ref($C) eq "Win32::GUI::".$ctrl), "new Win32::GUI::".$ctrl);
+$C->DESTROY() if $C;
+ok(!defined $W->{"Test".$ctrl}, "Test".$ctrl."->DESTROY");
+
--- Win32-GUI-1.01_03-cygwin/t/05_Timer.t.orig	2005-07-04 14:53:38.008125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/05_Timer.t	2005-07-04 14:10:47.461250000 +0100
@@ -0,0 +1,52 @@
+#!perl -w
+BEGIN { $| = 1 }
+
+use strict;
+no strict "refs";
+#use Test::More tests => 3;
+use Test::Simple 'no_plan';
+
+use Win32::GUI;
+
+my $W = new Win32::GUI::Window(
+    -name => "TestWindow",
+    -pos  => [  0,   0],
+    -size => [100, 100],
+    -text => "TestWindow",
+);
+my $elapse = 2000; # ms
+my $ctrl = "Timer";
+my $method = "Add".$ctrl;
+my $name = "Test".$ctrl."0";
+my $C = $W->$method($name, $elapse);
+ok((defined $C and ref($C) eq "Win32::GUI::".$ctrl), "$method => Win32::GUI::$ctrl");
+my $id = $C->{-id};
+ok(($id > 0), "-id > 0");
+ok(defined $W->{$name}, "defined \$W->{$name}");
+$C->DESTROY();
+ok(!defined $W->{-timers}->{$id}, "$name->DESTROY()");
+
+$name++;
+$method = "Win32::GUI::".$ctrl;
+$C = new $method($W, $name, $elapse);
+ok((defined $C and ref($C) eq $method), "new $method");
+$id = $C->{-id};
+ok(($id > 0), "-id > 0");
+ok(defined $W->{$name}, "defined \$W->{$name}");
+$C->DESTROY();
+ok(!defined $W->{-timers}->{$id}, "$name->DESTROY()");
+
+$name++;
+$C = new $method($W, $name, $elapse);
+$id = $C->{-id};
+$C->Kill();
+ok(!defined $W->{-timers}->{$id}, "$name->Kill()");
+ok(!defined $W->{$name}, "$name->Kill()");
+
+$name++;
+$C = new $method($W, $name, $elapse);
+$id = $C->{-id};
+$C->Interval($elapse + 1000);
+ok(($C->{-interval} == $elapse + 1000), "$name->Interval");
+$C->Kill();
+
--- Win32-GUI-1.01_03-cygwin/t/06_Cursor.t.orig	2005-07-04 14:53:38.009125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/06_Cursor.t	2005-07-04 14:08:35.898750000 +0100
@@ -0,0 +1,16 @@
+#!perl -w
+BEGIN { $| = 1 }
+
+use strict;
+use Test::Simple 'no_plan';
+
+use Win32::GUI;
+
+my $filename = "hsplit.cur";
+# Control requiring a filename as first arg
+my $C = new Win32::GUI::Cursor($filename, -name => "TestCursor");
+ok((defined $C and ref($C) eq "Win32::GUI::Cursor"), "new Win32::GUI::Cursor");
+$C->DESTROY() if $C;
+
+# ok((ref($C) ne "Win32::GUI::Cursor"), "Cursor->DESTROY");
+
--- Win32-GUI-1.01_03-cygwin/t/06_Icon.t.orig	2005-07-04 14:53:46.133125000 +0100
+++ Win32-GUI-1.01_03-cygwin/t/06_Icon.t	2005-07-04 14:08:35.930000000 +0100
@@ -0,0 +1,16 @@
+#!perl -w
+BEGIN { $| = 1 }
+
+use strict;
+use Test::Simple 'no_plan';
+
+use Win32::GUI;
+
+my $filename = "guiperl.ico";
+# Control requiring a filename as first arg
+my $C = new Win32::GUI::Icon($filename, -name => "TestIcon");
+ok((defined $C and ref($C) eq "Win32::GUI::Icon"), "new Win32::GUI::Icon");
+$C->DESTROY() if $C;
+
+# ok((ref($C) ne "Win32::GUI::Icon"), "Icon->DESTROY");
+
