Hi,
I remove Win32::GUI::MDI because it's current implementation not realy
permit to use it in an MDI application context.
I don't think anyone use this class ;o) And, i don't know this usage too.
I can restore old Win32::GUI::MDI class. But, this class name probably
confuse user for create MDI application.
Win32::GUI::MDI use same window class than Win32::GUI::MDIClient.
You can replace Win32::GUI::MDI with a Win32::GUI::MDIClient but AddLablel
method don't exist for this class.
It's only have a AddChild. And this class it's not same as a
Win32::GUI::Window like Win32::GUI::MDI.
For compatibility, i think you can replace Win32::GUI::MDI by something
like that :
$mdi_window = Win32::GUI::Window->new (
-remstyle => WS_OVERLAPPEDWINDOW,
-addstyle => WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL |
WS_HSCROLL,
-classname => 'MDICLIENT',
-name => 'mdi_window',
-parent => $mw,
-text => 'MDI',
-top => 0, -left => 0,
-width => $mwsw, -height => $mwsh - 40,
);
Laurent.
> On approximately 4/26/2004 9:40 AM, came the following characters from
> the keyboard of Laurent ROCHER:
> > Hi All,
> >
> > I commit new changes.
> > - Window properties now re-work.
>
> Good :) :)
>
> > - 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.
>
> This sounds good, and looks good. Unfortunately, not compatible with
> old Win32::GUI::MDI. I wonder if there is any way to have the added
> functionality you are producing, and still be compatible with the old
> code. My old code was:
>
> # MDI window
>
> $mdi_window = Win32::GUI::MDI->new (
> -name => 'mdi_window',
> -parent => $mw,
> -text => 'MDI',
> -top => 0, -left => 0,
> -width => $mwsw, -height => $mwsh - 40,
> -visible => 1,
> );
> if ( ! $mdi_window )
> { GUtil::demise( "MDI creation error: $^E\n" );
> }
>
> # label_bitmap inside MDI window
>
> $label_bitmap = $mdi_window->AddLabel(
> -name => 'label_bitmap',
> -bitmap => 1,
> -left => 0, -top => 0, -width => $mwsw - 40, -height => $mwsh - 40,
> -tip => 'list display area',
> );
>
> The interesting feature is that the label is automatically resized when
> you insert a different bitmap via later calles like
>
> $label_bitmap->SetImage ( $bitmap );
>
> The size is taken from the $bitmap image content. But by being within
> an MDI window, scroll bars were automatically added to that window so
> that the whole bitmap could be viewed when it is bigger than the
> containing MDI window, and the scroll bars would go away when the bitmap
> was smaller than the containing MDI window. And no other code was
> needed to achieve it.
>
> Probably I was using Win32::GUI::MDI for an inappropriate usage. This
> is all code that I wrote, and I am willing to rework it, but some ideas
> on how I should best do such a thing would be appreciated.
>
> The basic goal is a scrollable, fixed size container for a dynamically
> sized bitmap. Showing it via a label is not particularly necessary, but
> that seems to be convenient.
>
> One thing I didn't like about my above implementation is that I hadn't
> figured out how to control the scroll bars via API calls at all, to
> choose which part of the image was showing. The user could scroll at
> will, however.
>
> I'm not sure whether the old Win32::GUI::MDI corresponds more directly
> to the new MDIFrame or the MDIClient, or whether one must always have an
> MDIClient and MDIChild inside an MDIFrame, or just can put a label
> directly into an MDIFrame....
>
> I tried substituting MDIFrame for MDI in my code above, and got a
> surprising error:
>
> Use of uninitialized value in substitution (s///) at GUI.pm line 1046.
>
> After uncommenting the debugging print statement in AUTOLOAD, I discover
> that it is failing to autoload a method named "-name" on
> Win32::GUI::MDIFrame, but not sure why.
>
> Well, I'll play a bit more, maybe you'll have some ideas of where I
> should look.
>