I just know you're going to start asking how to put progress bars in there. 
Basically, there's a way of obtaining the rectangle of a specific part 
($statusbar->GetRect($part)). I'm pretty sure that to insert a progress bar 
into the status bar you simply make a new progress bar with the status bar as 
it's parent window, and position and size it using the values returned by 
GetRect.

Here's an example that shows a progress bar filling and unfilling in the status 
bar.

use Win32::GUI;
use Time::HiRes qw( time );

my $window = new Win32::GUI::Window(
        -name => "main",
        -text => "Status Progress",
        -size => [300,300],
        -pos => [100,100],
        -onResize => \&main_resize
);

my $status = new Win32::GUI::StatusBar($window);

$status->Parts(200,-1);

my $progress = new Win32::GUI::ProgressBar($status, -smooth => 1);

$progress->SetRange(0,1000);

$window->Show;

while(1) {
        Win32::GUI::DoEvents;
        $progress->SetPos( int((1 + sin(time)) * 500) );
}

sub main_resize {
        $status->Width($window->ScaleWidth);
        $status->Top($window->ScaleHeight - $status->Height);
        my($left,$top,$right,$bottom) = $status->GetRect(1);
        $progress->Left($left);
        $progress->Top($top);
        $progress->Width($right - $left);
        $progress->Height($bottom - $top);
}

__END__

Steve

> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of
> Chris Wearn
> Sent: 19 January 2004 10:15
> To: perl-win32-gui-users@lists.sourceforge.net
> Subject: RE: [perl-win32-gui-users] Statusbar example
> 
> 
> Hi Steve, Jez,
> 
> Thanks Steve. Now its all clear ;-) Got confused with the 
> MSDN which had
> Parts(nParts[array of widths]). Should have spotted the X 
> co-ordinate in
> 'x1' Doh!
> 
> And now Jez has answered my next question with his post, 
> which was how are
> the parts referenced... hours of fun coming up, another late 
> night I feel
> ;-)
> 
> Cheers
> 
> Chris
> 
> -----Original Message-----
> From: Stephen Pick [mailto:[EMAIL PROTECTED]
> Sent: Monday, 19 January 2004 5:49 PM
> To: Chris Wearn; perl-win32-gui-users@lists.sourceforge.net
> Subject: RE: [perl-win32-gui-users] Statusbar example
> 
> 
> Hi,
> 
> The correct usage is:
> 
> $status->Parts(x1,x2,x3,x4,x5...);
> 
> I'm sorry if the docs were confusing. This takes a list, not a list
> reference. Also it does not take "widths", it takes the X 
> co-ordinate of the
> right-hand edge of each part. This is true to the actual API 
> functionality,
> which is kind of weird but is actually quite handy. So, to 
> create 3 parts
> each of width 100 pixels, you would use:
> 
> $status->Parts(100,200,300);
> 
> Hope that helps out,
> 
> Steve
> 
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] 
> Behalf Of
> > Chris Wearn
> > Sent: 19 January 2004 06:30
> > To: perl-win32-gui-users@lists.sourceforge.net
> > Subject: [perl-win32-gui-users] Statusbar example
> >
> >
> > Hi All
> >
> > Having trouble with the new Statusbar additions:
> >
> > tried different combinations of PARTS to start dividing, but
> > no matter what
> > I've tried nothing seems to work. What order do the methods 
> need to be
> > called?
> >
> > I've had a look at MSDN Status Bars and read the notes that
> > Steve posted on
> > announcing the enhancements. Confused in that MSDN says 
> that Parts is
> > (nParts[array of widths])
> >
> > I've tried $Window_Status->Parts([200,100,-1]);     and
> > Parts(3,[200,100,-1])
> >
> > Can someone add a few of the methods to the example below.
> >
> > Chris
> >
> >
> > # ============================
> >
> > use Win32::GUI;
> >
> > my $Window = new GUI::Window(
> >     -title  => "Statusbar example",
> >     -left           => 100,
> >     -top            => 100,
> >     -width  => 400,
> >     -height => 200,
> >     -name   => "Window",
> >     -events =>{
> >             Terminate => sub { return -1 },
> >      }
> > );
> >
> > # Add a Status Bar
> > my $Window_Status = $Window->AddStatusBar(
> >     -name => "Window_Status",
> >     -text => "Panel 1"
> > );
> >
> > $Window->Show;
> > Win32::GUI::Dialog;
> >
> >
> >
> > -------------------------------------------------------
> > The SF.Net email is sponsored by EclipseCon 2004
> > Premiere Conference on Open Tools Development and Integration
> > See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
> > http://www.eclipsecon.org/osdn
> > _______________________________________________
> > Perl-Win32-GUI-Users mailing list
> > Perl-Win32-GUI-Users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
> >
> 
> 
> 
> -------------------------------------------------------
> The SF.Net email is sponsored by EclipseCon 2004
> Premiere Conference on Open Tools Development and Integration
> See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
> http://www.eclipsecon.org/osdn
> _______________________________________________
> 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