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

NAME

Win32::GUI::ReleaseNotes::RN_0_99_1 - This is the release notes for Version 0.99_1 of Win32::GUI

Release Date

2nd October, 2004

Summary of Changes

This is first Release candidate for Win32::GUI v1.0.

This version is a main development branch of Win32::GUI based on a rewritten base code.

  - Completely new base code. 
  - Full NEM/OEM support. 
  - Lot of control Win32 API method. 
  - Preserved Perl context. 
  - New DoModal. 
  - More documentation. 
  - MDI application support. 
  - Add MonthCal control. 
    ... 

CHANGELOG

  + [Laurent Rocher] :
    - Readme.txt, readme, GUI.pm, GUI.xs
        + VERSION to 0.99_1 for first release candidate to 1.0
    - Add somes samples

  + [Glenn W Munroe] :
    - ListView.xs :
        + Add more events and new style flag.

  + [Glenn Linderman] :
    - GUI.pm
        + Bump VERSION to 0.0.682 
    - GUI.xs :
        + Minor fix to -multisel handling for GetOpenFileName
        + Fix to Scroll to support 32 bit range for SB_THUMBTRACK and
          SB_THUMBPOSITION
    - samples/BitmapScroll.pl
        + Enhancements.

  + [Laurent Rocher] :
    - MakeFile.pl, MakeFile_m.pl
        + Use tab as space in rule for use with dmake
    - GUI.pm, GUI.xs
        + Add -brush option for Win32::GUI::Class.
    - GUI_Helper.cpp
        + classname_From and handle_From : Replace strlen as static
          string length.
    - Window.xs, GUI_MessageLoops.cpp, Samples\BitmpaScroll.pl :
        + Move Paint event in Window_onEvent.
        + Use DoEvent_Paint function like Graphic
    - ToolTip.xs :
        + Add -balloon option

  + [Glenn Linderman] :
    - GUI.xs :
        + Deprecate  -overdriveprompt  in favor of  -overwriteprompt  in
          GetSaveFileName

  + [Glenn Linderman] :
    - GUI.xs :
        + Add extra, optional parameter to Win32::GUI::Scroll to better
          support dynamic display of windows when scrolling.  The internals
          add support for the SB_THUMBTRACK event.

  + [Glenn Linderman] :
    - GUI.pm :
        + Add definition of @acc to Win32::GUI::AcceleratorTable::new
          to avoid cumulative accelerator key references among windows

  + [Jeremy White] : Added -onPaint event for windows
    - Window.xs, GUI_MessageLoops.cpp
        + Added -onPaint event for windows

  + [Laurent Rocher] :
    - GUI.pm, GUI_Constants.cpp :
        + Add MessageBox return value constants.
    - GUI.xs :
        + Create : Force a window name for all control.
        + Add MessageBeep.
        + ChooseFont : Change -size by -pointsize option and return value.
    - GUI_Events.cpp :
        + DoEvent_Menu : Add Self for NEM event.
    - GUI_Helpers.cpp :
        + Perlud_Free : Check if svSelf is a valid SV before use it.
    - GUI_MessageLoops.cpp :
        + WindowMsgLoop : Add WM_INITMENU event.
    - Textfield.xs :
        + Fix EN_UPDATE event handler name.
        + New Methods : CanPaste & HaveSel.
    - Window.xs:
        + New InitMenu event.
    - Samples\Notepad.pl : New file

  + [Jeremy White] : Added example and new function
    - samples\BitmapScroll.pl 
    - GUI.xs
        + Added LoadString Function 
        
  + [Glenn Linderman] : Fix GetOpenFileName
    - GUI.h:
        + change VERSION
    - GUI.xs:
        + change  GetOpenFileName to  support -multisel =>  N, where  N is
          multiplied  by 4000  to  obtain the  results  buffer size.   The
          minimum results buffer size is 256 for N <= 0, and 4000 for N ==
          1.

  + [Laurent Rocher] : Add MonthCal Control
    - MonthCall.xs : New file
    - GUI.h :
        + Add new event argtype for SV*.
        + New MonthCall control callback function and constant.
    - GUI.pm :
        + Add MonthCall control.
    - GUI_Constants.cpp :
        + Add MonthCall class constant.
    - GUI_Events.cpp :
        + DoEvent : Add new type argument for SV*.
    - GUI_Helpers.cpp :
        + Add MonthCall control.
    - Makefile.pl, Makefile_m.pl :
        + Add MonthCall.xs
    - Samples\MonthCal.pl : New file
    - Docs\DoDoc.pl : 
        + Add MonthCall.xs

  + [Steven M. Martin] : Fix TextField -prompt option.
    - GUI.pm :
        +  Win32::GUI::Textfield new : Fix TextField -prompt option
           when prompt left was negative.

  + [Jeremy White] : New Events for Treeview control
    - TreeView.xs
       + Added BeginLabelEdit Event
       + Added EndLabelEdit Event
       
  + [Laurent Rocher] : Fix IdFirstChild option for MDIClient.
    - GUI.pm :
        + Remove registered class for MDIClient.
    - GUI.xs :
        + RegisterClassEx : Remove MDIClient value for -widget option.
        + Create : SubClass MDIClient window.
        + Added SetActiveWindow.
    - GUI_MessageLoops.cpp :
        + MDIClientMsgLoop: Rewrite as simple subclass MsgLoop.
    - MDI.xs :
        + MDIClient_onPreCreate : Change classname.
        + MDIChild_onPreCreate  : Change default style.

  + [Laurent Rocher] : Restore AUTOLOAD
    - GUI.pm :
        + Uncomment AUTOLOAD
        + Add AUTOLOAD to MDIFrame, MDIClient.

  + [Laurent Rocher] : Add MDI Window Support and Fix Tied property &
                       Window Destruction.
    - GUI.h :
        + Added new MDI Constants and Callback functions.
        + Added a dwData field in PERLWIN32GUI_USERDATA.
    - GUI.pm :
        + _new : Fix tied hash property.
        + Comment AUTOLOAD in Win32::GUI::Window : Is usefull ?
        + New Win32::GUI::MDIFrame, Win32::GUI::MDIClient,
          Win32::GUI::MDIChild class.
        + Win32::GUI::WindowProps : Fix Destroy managing.
        + Register new class for MDI.
    - GUI.xs :
        + In GetKeyboardState : Use a stack array for key.
        + In RegisterClassEx : 
            + Added MDIFrame, MDIClient, MDIChild widget option.
            + Avoid reccursive Window Msg Loop call.
        + In Create :
            + Use a weaken reference for perlpud->SvSelf for clean reference
              count and memory free.
            + Added MDI support.
            + Added dwData field support.
        + In Change : Added MDI support.
        + In Dialog, DoEvents, DoModal : Added MDI event loop support.
        + LockWindowUpdate : Rewrite shorter.
    - GUI_Constants.cpp :
        + Added MDI class constants.
    - GUI_Helpers.cpp :
        + Addes MDI class callback.
        + Perlud_Free : Correct destruction problem.
    - GUI_MessageLoops.cpp :
        + In CommonMsgLoop : Don't manage WM_GETMINMAXINFO for MDI Child.
        + In WindowMsgLoop : 
            + Added support for WndProc call.
            + For WM_DESTROY, call default MsgLoop before free perlud.
            + Handle WM_MDIACTIVATE & WM_SETFOCUS for MDI Window.
        + Added DefMDIFrameLoop and MDIFrameMsgLoop for MDIFrame Window.
        + Added MDIClientMsgLoop for MDICLient window.
        + Added DefMDIChildLoop and MDIChildMsgLoop for MDIChild Window.
    - GUI_Options.cpp :
        + In ParseWindowOptions : Added a missing else for class specific
          option parsing.
    - Makefile.pl &  Makefile_m.pl : Add new MDI.xs file.
    - MDI.xs : Manage MDI window.
    - Window.xs : Remove MDI class and add MDI event documentation.
    - Samples\MDI.pl : New Sample form MDI use.
    - Docs\DoDoc.pl : Add new MDI.xs file.

  + [Jeremy White] : DoModal bug fix (windows would flicker)

  + [Jeremy White] : New methods/functions (from Adhoc.pm by Johan Lindstr?m).
    - DC.xs
        + Added SetBrushOrgEx Method
        + Added GetBrushOrgEx Method
    - GUI.xs
        + Added LockWindowUpdate Method
        + Added GetKeyboardState Function
        + Added GetAsyncKeyState Function

  + [Jeremy White] : New DC method
    - DC.xs 
        + Added DrawIcon Method

  + [Jeremy White] : New Window method
    - GUI.pm
        + Added Center method (Code from Adhoc.pm by Johan Lindstr?m).

  + [Jeremy White] : Improvements in Windows GDI support.
    - DC.xs 
        + Changed Region constructors to use object calling convention   

  + [Jeremy White] : Improvements in Windows GDI support.
    - DC.xs 
        + CreateCompatibleDC method now returns a DC object
        + Added CreateCompatibleBitmap method
        + Added Line method (combination of MoveTo and LineTo)
        + Added Win32::GUI::Region object (used for clipping)
           + Added CreateRectRgn
           + Added CreateEllipticRgn
           + Added CreateRoundRectRgn
           + Added PtInRegion
           + Added RectInRegion
           + Added SetRectRgn
           + Added OffsetRgn
           + Added GetRgnBox
           + Added EqualRgn
        + Added SelectClipRgn
        + Added FillRgn
        + Added FrameRgn
        + Added InvertRgn
        + Added PaintRgn
        
  + [Laurent Rocher] : Add new options and documentation.
    - Button.xs : 
        + Add new style option and documentation.
    - Combobox.xs
        + Add new style option and documentation.
    - Header.xs
        + Add new style option and documentation.
    - GUI_Helper.cpp :
        + CreateObjectWithHandle : Fix memory leak 
    - GUI.pm :
        + Add documentation.
    - Label.xs :
        + Add new option.
    - Rebar.xs :
        + Add new option.
    - Trackbar.xs :
        + Add documentation.
    - Window.xs :
        + Add documentation.
    
  + [Laurent Rocher] : Complet ImageList and TabStrip API.
    - Font.xs :
        + Improve parsing font options.
    - GUI.h :
        + Add new prototype.
    - GUI.pm :
        + Add method AddMasked for ImageList.
        + Add method Change for NotifyIcon.
    - ImageList.xs:
        + Add new methods and documentation.
    - StatusBar.xs:
        + Add new style option.
    - TabStrip.xs:
        + Add new methods, styles options and documentation.
    - Trackbar.xs :
        + Change styles name options.
    - Todo :
        + Complete todo

  + [Laurent Rocher] : Complet Tooltip API.
    - GUI.h :
        + Add new prototype.
    - GUI_Options.cpp :
        + Add ParseTooltipOptions.
    - ToolTip.xs :
        + Complet API.

  + [Laurent Rocher] : Fix some build problem with perl5.6 and
                       remove some MinGW warning.

  + [Laurent Rocher] : Complete API and documentation
    - Combobox.xs, DateTime.xs, GUI.pm, GUI.xs :
        + Add some documentation
    - DC.xs :
        + Add lot of new methods
    - GUI.h :
        + Add some new prototype
    - GUI_Options.cpp
        + Add new parse options function.
    - Header.xs :
        + Add new methods and styles options.
    - Label.xs :
        + Add new styles options.
    - Listbox.xs :
        + Add new styles options and documentation.
    - ListView.xs :
        + Add new methods, styles options and documentation.
    - Rebar.xs :
        + Add new methods, styles options and documentation.
    - Toolbar.xs :
        + Add new methods, styles options and documentation.
    - Trackbar.xs :
        + Add new styles options and documentation.
    - TreeView.xs :
        + Add new styles options and documentation.
    - TYPEMAP
        + Add HRGN.

  + [Laurent Rocher] : New Accelerator event NEM code.
    - GUI.h :
        + Add FindChildWindowsProc prototype and search typedef struct.
    - GUI_Events.cpp :
        + Rewrite DoEvent_Accelerator.
    -  GUI_Helpers.cpp :
        + Add FindChildWindowsProc for search a child with specific name.

  + [Laurent Rocher]
    - GUI.h :
        + Add Animate_OpenEx macro for MinGW
        + Add a IS_MODAL dwPlStyle flag.
        + Add EnableWindowsProc callback.
    - GUI.xs :
        + DoModal() : 
            - Return false if function already in DoModal.
            - Add a boolean parameter for disable all Top Window and
              not only parent/caller.
    - GUI_Helpers.cpp :
        + Add EnableWindowsProc : Activate or Deactivate current
          thread top window.
    - GUI.pm :
        + Remove Win32::GUI::Window::DESTROY because unecessary
          and conflict with Win32::GUI::WindowProps.

  + [Laurent Rocher]
    - UpDown :
        + Fix Scroll event.
    - GUI_Events.cpp :
        + In DoEvent_* functions : PERLWIN32GUI_EVENTHANDLING is set after
          event call.

  + [Laurent Rocher]
    [#627779] : Not able use with embedded perl 
    [#918896] : No [Dbl]RightClick events in NEM
    [#921170] : 670: DC Circle strange arguments
    [#918899] : No NotifyIcon support in NEM
    [#880798] : Accelerators don't work with NEM

    Add destroy window mechanism and free perlud ressource when windows destroy
    Add NEM support for notifyIcon.
    Add full mouse support (left/middle/right mousedown, mouseup, mouseDblClick)

    - Annimation.xs : 
        + Correct Event handling and add OpenEx method.
    - Button.xs : 
        + Use dwFlags & dwFlagsMask in perlcs for set check state.
        + Fix GetCheck and SetCheck Alias.
    - Combobox.xs :
        + Add ComboboxEx ExtendedStyle.
        + Add some documentation and missing methods.
    - DC.xs : 
        + Fix Circle method.
    - GUI.h :
        + Add new dwFlagsMask value in PERLWIN32GUI_CREATESTRUCT and a
          BitmaskOptionValueMask macro
        + Add PERLUD_FREE macro calling new Perlud_Free function.
        + Add new common Event constant.
    - GUI.pm :
        + Win32::GUI::_new : Use tie return value for safe.
        + Win32::GUI::Window::DESTROY : Change timer/notifyicon
          clean up (probably no more need).
        + Win32::GUI::Timer : Change new and Destroy method.
          We store timer name in -timers parent hash, and Timer object only
          1 time as parent child.
          We don't store window parent reference in Timer object for
          avoid circular reference. 
        + Win32::GUI::NotifyIcon : Change new and Destroy method.
          Same mechanism than Timer.
        + In Win32::GUI::WindowProps HASH mechanism : 
          Add a DESTROY method and call DestroyWindow for remove Self Window.
    - GUI.xs :
        + RegisterClassEx() : Unregister class if first register fail,
          and re-try to register.
        + Create : Increment self reference when add to parent hash.
        + DoModal : Remove a forget printf.
    - GUI_Events.cpp :
        + DoEvent_Timer() : Change timer name search (related new method change)
        + DoEvent_NotifyIcon() : Change NotifiIcon name and object search
          (related new method change)
          and add NEM event support.
    - GUI_Helpers.cpp :
        + Add Perlud_Free : Free all allocated data in perlud
          (hvEvent, avHooks, svSelf and perlpud).
          Use PERLUD_FREE macro for call it.
    - GUI_MessageLoops.cpp :
        + Add PERLUD_FREE on WN_DESTROY event.
        + Add new standard event : MouseDblClick, MouseRightDown, MouseRightUp,
          MouseRightDblClick, MouseMiddleDown, MouseMiddleUp,
          MouseMiddleDblClick, Char.
        + Add new NotifyIcon event : DblClick, RightDblClick, MiddleClick,
          MiddleDblClick.
        + In CustomMsgLoop : Call ControlMsgLoop if PERLWIN32GUI_INTERACTIVE
          style flag is set.
    - GUI_Options.cpp :
        + ParseNEMEvent : Add new standard event.
        + Add ParseNotifyIconOptions and ParseNEMNotifyIconEvent : add NEM
          support for NotifyIcon.
    - NotifyIcon.xs :
        + Use ParseNotifyIconOptions for parsing option and NEM event.
    - Splitter.xs :
        + Splitter_onEvent : Fix PerlResult return.
    - Window.xs :
        + Graphic_onEvent & Graphic_onParseEvent : Clean Interactive graphics
          event handling.
          Now, CustomMsgLoop call ControlMsgLoop if PERLWIN32GUI_INTERACTIVE
          style flag is set.
    
  + [Laurent Rocher]
    - GUI.h : PERLUD_FROM_WND macro return now 0 (MingW Warning).
    - GUI.pm : 
        + new Graphic method use standard _new creation (and replace hard
          coded constant)
        + Fix timer DESTROY
    - Window.xs : Graphic_onEvent return Perlresult (and not 0).

  + [Laurent Rocher]
    [#673252] : Win32::GUI and PERL_CONTEXT
    [#879424] : Modal Window Support
    - New Base code : 
        + Separate each control in a specific XS file.
        + Add callback function for each control (onPreCreate, onParseOption,
          onPostCreate, onParseEvent, OnEvent).
        + Rewrite Event Loop.
        + Merge all event firing code in on function (DoEvent) for OEM and NEM.
        + New DoModal function.
        + Improve Change method.
        + Add lot of control Win32 API method. (Keep alphabetical order and
          standard API name).
        + Add new events for control.
        + Some Clean Up.
        + Reduce size of allocate structure per window.
        + Add Perl context handling.
    - Fix doc tools generator (DoDoc.pl and DoHtml.pl)

Contributors to this release

Glenn Linderman
Glenn W Munroe
Jeremy White
Laurent Rocher
Steven M. Martin