Hi All, I commit new changes. - Window properties now re-work. - Handle correctly Window life and Perl variable life (i hope it work because i loose my hair on it ;o) - Add MDI window support (3 new class MDIFrame, MDIClient and MDIChild).
For MDI, i have add a sample in Samples directory. It's work but one stuff don't work as expected :-( I have a trouble with menu identifer when try to add a window menu to MDIClient. It's use 0 based identifier for window child menu item but not assigned default MDIChild identifier. So, i have a conflict with standard menu item. Need to investigate ... Laurent. Changelog : 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.