Hi,

Looking for more information on MDI I ran into this:

>  > 2001-04-03 08:40
>  > Please have a look at the GOE (GUI Object Explorer) at
>  > http://www.fairymails.com/perl/
>  > Download either goe.zip or the the other three files (which are
>  > actually the contents of the zip), start goe.pl and give it a
>  > Win32-GUI script in the fileopen dialog. If it happens to find a *.ui
>  > file of the same name, it offers to include this as part of the script
>  > - this is to interface to David's gb109. Maybe we can melt the goe -
>  > once ready - into the gb and call it ide?
>
>       I've been planning a gui debugger for the last few days (although I
>  haven't actually written any code yet).  I think an IDE would be a
>  great idea.  With GB,GOE, an editor, and a debugger, it would be a
>  pretty complete tool.  Maybe we should start working on this
>  together.  If we do, we should probably design with the NEM in mind.
>       As for the editor, Aldo mentioned that he was planning on adding a
>  Scintilla component.  As I had never heard of it before, I looked it
>  up, and it would be a much better editor than RichEdit.  RichEdit
>  will do in the meantime, although it would mean creating a syntax
>  highlighting routine.
>       Finally, I think it would be great if we could do it in a Multiple
>  Document Interface, but last time I tried to use it, Win32::GUI::MDI
>  was not working yet.  I have not yet tried it in 0.0.558, though.
>  Any news, Aldo?
>

That sounds very good, but it's written almost 2 years ago. Did anything
happen with these plans? Is there any news, did this editor ever got
released?

However, I'm still playing around with the GUI::MDI Package. It looks like
something although not all events seem to work. And I have some points of
discussion/question. If anyone knows some more about MDI and the points
listed below, please help:

- if you create a MDI parent with Visual Basic for example, things like
maximizing are done in a very nice way: the system buttons (minimize/close
etc) become attached to the menu bar of the parent window and the title bar
of the child disappears. And when you resize the parent the maximized child
resizes too. Run my example, maximize a child and resize the parent - you'll
see what I mean.

- another thing is the menu. VB automaticle extends the menu of the parent
with any menu given with a child. That's nice - its not neccesary in
Win32::GUI - I could write such code myself.

- also, the child windows never seem to get focus, or become activated. The
titlebars stay gray. I would like the topmost child window to have a blue
titlebar as well - just like the parent.

Here's my code:

use Win32::GUI;
my @sub_windows;
my $menu = new Win32::GUI::Menu(
  "&Window"      => "mnu_window",
  "   >   &Create a new window" => "mnu_win_new",
);
my $window = new Win32::GUI::Window(
  -name => 'main_window',
  -pos => [0,0],
  -size => [640,480],
  -text => "MDI Application test",
  -menu => $menu,
  -addstyle => WS_CLIPCHILDREN,
);
$window->AddStatusBar (
  -name => "status",
);
my $MDI = new Win32::GUI::MDI (
  -name => "MDI",
  -pos => [0,0],
  -parent => $window,
);
$window->Show(3); # 3 = MAXIMIZED
Win32::GUI::Dialog();
exit;

sub mnu_win_new_Click {
  my $num = @sub_windows;
  my $menu = new Win32::GUI::Menu(
    "&Window"      => "mnu_window",
    "   >   I am window &$num" => "mnu_win$num",
    );
  my $win = Win32::GUI::Window->new (
    -name => "sub_window_$num",
    -text => "Window $num",
    -size => [200,200],
    -parent => $MDI,
    -menu => $menu,
    -addstyle => WS_CHILD | WS_CLIPSIBLINGS,
    -topmost => 1,

    );
  $win->Show();
  eval "sub sub_window_${num}_Maximize {print '$num got maximized!\n';}";
  push @sub_windows, $win;
}
sub main_window_Terminate {
  return -1;
}
sub main_window_Resize {
  $window->status->Move(0,$window->ScaleHeight - 20);
  $window->status->Resize($window->ScaleWidth,25);
  $window->MDI->Resize($window->ScaleWidth,$window->ScaleHeight - 20);
}

thanx in advance
Roelof



Reply via email to