Johan, that is a pretty good explanation.  I'm a bit new to Win32::GUI,
having used TK more, but never became a super user with it either.  Once
question I have, I notice that subroutines don't need specific calls, so
how do they get called.

A perfect example would be the hello.pl from th 665 source release.  How
are the subroutines being called in this?

Thanks

Mal

use Win32::GUI;
$MW = new Win32::GUI::Window(
    -title   => 'hello.pl',
    -left    => 100,
    -top     => 100,
    -width   => 150,
    -height  => 100,
    -name    => 'MainWindow',
    -visible => 1,
);

#Add controls
my $label = $MW->AddLabel(-text => "This is my text.", 
                            -font => $font);

$hello = $MW->AddButton(
    -text    => 'Hello, world',
    -name    => 'Hello',
    -left    => 25,
    -top     => 25,
);

$MW->Show();
$rc = Win32::GUI::Dialog(0);

sub MainWindow_Terminate {
    $MW->PostQuitMessage(1);
    # return -1;
}

sub Hello_Click {
    if($MW->Hello->Text eq "Hello, world") {
        $MW->Hello->{-text} = "OneMoreTime";
    } else {
        print STDOUT "Hello, world\n";
        $MW->PostQuitMessage(0);
    }
}


-----Original Message-----
From: Johan Lindstrom [mailto:[EMAIL PROTECTED] 
Sent: Monday, August 26, 2002 10:21 AM
To: perl-win32-gui-users@lists.sourceforge.net
Subject: Re: [perl-win32-gui-users] first app ?


At 08:03 2000-08-27 +0300, [EMAIL PROTECTED] wrote:
>I've just installed win32::gui but how i will do my first app if I try 
>this :
>
>use Win32::GUI;
>my $w = new Win32::GUI(-name => 'XX');
>$w->Show();
>
>But the window just got created and destroyed imedietly !?! Why this 
>happen ?

Unlike your vanilla Perl program, most event based programs run what's 
called a main event loop. A GUI is most often event based. It means that

you start it, and then it sits there waiting for user input (events,
like 
mouse clicks on buttons, or timers being triggered).

In Win32::GUI, you enter the main loop by calling Win32::GUI::Dialog(),
so 
you should add that to your program, after the Show().

Before entering the main loop you should have created all your windows
(and 
Show():ed the ones you want visible from the beginning). In most cases
you 
should never call Win32::GUI::Dialog() more than once in your program.

After you call Win32::GUI::Dialog(), the only way to exit is from an
event. 
This happens when an event handler returns -1. Typically, the Terminate 
event handler of your application window should return -1. In your case:

sub XX_Terminate {
     return(-1);
     }

In other cases, you want to Hide() the window (and return 0) in the 
Terminate event handler instead, so you can Show() it again at a later
time.


/J

-------- ------ ---- --- -- --  --  -    -     -      -         -
Johan Lindström    Sourcerer @ Boss Casinos     [EMAIL PROTECTED]

Latest bookmark: "Salon.com Technology  I come to bury IAmCarbona..."
<http://www.salon.com/tech/feature/2002/08/03/deleteddomains/index.html>
dmoz (1 of 13): /Computers/Internet/On_the_Web/Weblogs/Tools




-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old cell
phone?  Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users

Reply via email to