From: Frazier, J. J. <Joe.Frazier@Peopleclick.com> - 2003-07-21 10:30:46
|
> -----Original Message----- > From: Dennis Putnam [mailto:da...@mi...] > Sent: Sunday, July 20, 2003 10:00 AM > To: per...@li... > Subject: RE: [perl-win32-gui-users] Click subroutine doesn't=20 > get control > when script is executing >=20 >=20 >=20 > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 >=20 > At 03:58 AM 7/20/2003, you wrote: > >In the typiucal windows way (which we can do in PERL), is to start a > >TIMER. > >The classic to this approach is a "setup" pogram with the=20 > prograss bar. > > > >When you start your script, you will need to set a WM_TIMER for some > >time slice, > >eg, every 2 seconds. > > > >If you're building your own GUI, then before the > >WitEvent/DoModal/Whatever, you;ll want > >to put it in there. > > > > > >Here's the Win32::GUI package's description...Hope this helps out :) > > SNIP >=20 > Thanks for the reply, it might. However, it is not clear what=20 > I do in the=20 > timer event. Should it just be a NOOP so that the event=20 > simply interrupts=20 > processing (do I even need it)? If a button click has=20 > occurred will the=20 > click event will be triggered or do I need to check something=20 > in the timer=20 > event to see if the button was clicked? >=20 >=20 Forget the timer ( in this situation) sub Button_click { my $var =3D1; while ($var) #####long running loop { #### Do somestuff here and then repeat Win32::GUI::DoEvents(); $var =3D0; } } "JUDICIOUS" use of DoEvents will help as long as you are not actually = running a blocking I/O type call such as waiting on an open socket for = data. If you are just doing alot of single actions in a loop, then = DoEvents is what you need. I would even suggest building a cancel = button on your page that is hidden until the loop stuff is started. Of = course, if you do that, you need to make sure that $var is in a scope = that will pass into Button_click and stop the execution on its next = check. Joe |