From: Waldemar B. <wb...@sa...> - 2007-12-04 22:15:23
|
Hello! At the end I've enclosed the little code of Perl/Win32:GUI. If you start the code you can notice that the sequence is the following: 1. Window appears on the screen. 2. An incomplete "field1" appears too. 3. After 2 seconds it disappears!!! for next 2 seconds and the field "field2" is displayed also incomplete. 4. At the end both fields are displayed correctly. Could anyone of you predict this disappearance looking at the code? If yes please let me know how to get the following sequence of events: 1. The first complete "field1" is displayed at the beginning. 2. After two seconds the second field is also displayed, but still the first is visible. And additional question: is this behavior (unlogical for me) the feature of Perl Win32::GUI or native Win32-GUI itself? Regards Waldemar ################################# #!/usr/bin/perl -w use warnings; use strict; use Win32::GUI qw(); my $my_window = new Win32::GUI::Window ( -name => 'my_window', -size => [ 400, 400 ], ); $my_window->Show(1); my $field1 = $my_window->AddTextfield( -name => 'field1', -text => 'field1', -pos => [ 30, 30 ], -size => [ 100, 100 ], ); $field1->SetFocus(); sleep(2); my $field2 = $my_window->AddTextfield( -name => 'field2', -text => 'field2', -pos => [ 130, 130 ], -size => [ 100, 100 ], ); $field2->SetFocus(); sleep(2); Win32::GUI::Dialog(); ################################# |
From: Brian M. <bmi...@hu...> - 2007-12-05 01:38:14
|
Waldemar Biernacki wrote: > Hello! > > At the end I've enclosed the little code of Perl/Win32:GUI. > > If you start the code you can notice that the sequence > is the following: > > 1. Window appears on the screen. > 2. An incomplete "field1" appears too. > 3. After 2 seconds it disappears!!! for next 2 seconds and > the field "field2" is displayed also incomplete. > 4. At the end both fields are displayed correctly. > > Could anyone of you predict this disappearance looking at the code? > If yes please let me know how to get the following sequence > of events: > > 1. The first complete "field1" is displayed at the beginning. > 2. After two seconds the second field is also displayed, > but still the first is visible. > > And additional question: is this behavior (unlogical for me) > the feature of Perl Win32::GUI or native Win32-GUI itself? > > Regards > Waldemar > I'm not sure what you are trying to do here, but if you want field1 to show for 2 seconds, and then field2 to appear, here is the corrected script. (There may be a better way to do this, but it's what I could think of off the top of my head.) ################################# #!/usr/bin/perl -w use warnings; use strict; use Win32::GUI qw(); my $my_window = new Win32::GUI::Window ( -name => 'my_window', -size => [ 400, 400 ], ); $my_window->Show(1); my $field1 = $my_window->AddTextfield( -name => 'field1', -text => 'field1', -pos => [ 30, 30 ], -size => [ 100, 100 ], ); $field1->SetFocus(); $my_window->DoEvents(); # You need to DoEvents to see what you added to the window sleep(2); my $field2 = $my_window->AddTextfield( -name => 'field2', -text => 'field2', -pos => [ 130, 130 ], -size => [ 100, 100 ], ); $field2->SetFocus(); $my_window->DoEvents(); # Update the window sleep(2); Win32::GUI::Dialog(); ################################# -- Brian, Tommy, Helen and Paka -- bmi...@hu... This message traveled at least 44,000 miles to reach you! --- avast! Antivirus: Outbound message clean. Virus Database (VPS): 071205-0, 12/05/2007 Tested on: 12/4/2007 8:34:50 PM avast! is copyright (c) 2000-2007 ALWIL Software. http://www.avast.com |
From: Waldemar B. <wb...@sa...> - 2007-12-05 06:46:38
|
Thank you Brian, it works! Waldemar Wednesday 05 of December 2007 02:34:50 napisa=B3e=B6(-=B3a=B6): > Waldemar Biernacki wrote: > > Hello! > > > > At the end I've enclosed the little code of Perl/Win32:GUI. > > > > If you start the code you can notice that the sequence=20 > > is the following: > > > > 1. Window appears on the screen. > > 2. An incomplete "field1" appears too. > > 3. After 2 seconds it disappears!!! for next 2 seconds and > > the field "field2" is displayed also incomplete. > > 4. At the end both fields are displayed correctly.=20 > > > > Could anyone of you predict this disappearance looking at the code? > > If yes please let me know how to get the following sequence=20 > > of events: > > > > 1. The first complete "field1" is displayed at the beginning. > > 2. After two seconds the second field is also displayed, > > but still the first is visible. > > > > And additional question: is this behavior (unlogical for me) > > the feature of Perl Win32::GUI or native Win32-GUI itself? > > > > Regards > > Waldemar > > =20 >=20 > I'm not sure what you are trying to do here, but if you want field1 to=20 > show for 2 seconds, and then field2 to appear, here is the corrected=20 > script. (There may be a better way to do this, but it's what I could=20 > think of off the top of my head.) >=20 > ################################# > #!/usr/bin/perl -w >=20 > use warnings; > use strict; >=20 > use Win32::GUI qw(); >=20 > my $my_window =3D new Win32::GUI::Window ( > -name =3D> 'my_window', > -size =3D> [ 400, 400 ], > ); > $my_window->Show(1); >=20 > my $field1 =3D $my_window->AddTextfield( > -name =3D> 'field1', > -text =3D> 'field1', > -pos =3D> [ 30, 30 ], > -size =3D> [ 100, 100 ], > ); >=20 > $field1->SetFocus(); > $my_window->DoEvents(); # You need to DoEvents to see what you added to=20 > the window > sleep(2); >=20 > my $field2 =3D $my_window->AddTextfield( > -name =3D> 'field2', > -text =3D> 'field2', > -pos =3D> [ 130, 130 ], > -size =3D> [ 100, 100 ], > ); >=20 > $field2->SetFocus(); > $my_window->DoEvents(); # Update the window > sleep(2); >=20 > Win32::GUI::Dialog(); >=20 > ################################# >=20 |
From: Robert M. <ro...@th...> - 2007-12-08 01:42:03
|
On 05/12/2007, Brian Millham <bmi...@hu...> wrote: > Waldemar Biernacki wrote: > > Hello! > > > > At the end I've enclosed the little code of Perl/Win32:GUI. > > > > If you start the code you can notice that the sequence > > is the following: > > > > 1. Window appears on the screen. > > 2. An incomplete "field1" appears too. > > 3. After 2 seconds it disappears!!! for next 2 seconds and > > the field "field2" is displayed also incomplete. > > 4. At the end both fields are displayed correctly. > > > > Could anyone of you predict this disappearance looking at the code? > > If yes please let me know how to get the following sequence > > of events: > > > > 1. The first complete "field1" is displayed at the beginning. > > 2. After two seconds the second field is also displayed, > > but still the first is visible. > > > > And additional question: is this behavior (unlogical for me) > > the feature of Perl Win32::GUI or native Win32-GUI itself? It's really the underlying Win32 implementation that causes it. A (rather simplistic) way of viewing it is that some of the drawing is done only when certain requests to re-paint a window are processed, and these requests to re-paint are only processed when a message loop is running (Win32::GUI::DoEvents() or Win32::GUI::Dialog(), among others). In your particular example you could replace the $my_window->DoEvents(); lines that Brian proposed with $my_window->Update(); and you'd see (almost) the same effect. Update() causes any outstanding paint events to be processed; DoEvents() causes ALL outstanding event (painting or otherwise) to be processed. Regards, Rob. > > > > Regards > > Waldemar > > > > I'm not sure what you are trying to do here, but if you want field1 to > show for 2 seconds, and then field2 to appear, here is the corrected > script. (There may be a better way to do this, but it's what I could > think of off the top of my head.) > > ################################# > #!/usr/bin/perl -w > > use warnings; > use strict; > > use Win32::GUI qw(); > > my $my_window = new Win32::GUI::Window ( > -name => 'my_window', > -size => [ 400, 400 ], > ); > $my_window->Show(1); > > my $field1 = $my_window->AddTextfield( > -name => 'field1', > -text => 'field1', > -pos => [ 30, 30 ], > -size => [ 100, 100 ], > ); > > $field1->SetFocus(); > $my_window->DoEvents(); # You need to DoEvents to see what you added to > the window > sleep(2); > > my $field2 = $my_window->AddTextfield( > -name => 'field2', > -text => 'field2', > -pos => [ 130, 130 ], > -size => [ 100, 100 ], > ); > > $field2->SetFocus(); > $my_window->DoEvents(); # Update the window > sleep(2); > > Win32::GUI::Dialog(); > > ################################# > > -- > Brian, Tommy, Helen and Paka -- bmi...@hu... > This message traveled at least 44,000 miles to reach you! > > > > --- > avast! Antivirus: Outbound message clean. > Virus Database (VPS): 071205-0, 12/05/2007 > Tested on: 12/4/2007 8:34:50 PM > avast! is copyright (c) 2000-2007 ALWIL Software. > http://www.avast.com > > > > > ------------------------------------------------------------------------- > SF.Net email is sponsored by: The Future of Linux Business White Paper > from Novell. From the desktop to the data center, Linux is going > mainstream. Let it simplify your IT future. > http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ > -- Please update your address book with my new email address: ro...@th... |