The problem occurs when an already visible window (or dialogbox) is
overlayed with a popup dialogbox. A hole is left in the first window where
the popup box was upon its closing. The hole does not go away until
Win32::GUI::Dialog() regains control and refreshes the window. It appears
that Win32::GUI::Dialog() automatically refreshes the screen when control
returns to it. But in a case where a popup dialog is called within a
subroutine, and that subroutine performs some processing after the popup
dialog is closed, there is a log time before Win32::GUI::Dialog() is back in
control. While that lag time exists, the first screen remains unrefreshed so
that the user looks at an incomplete window objects. In the case of a
Win32::GUI::Messagebox being called, this hole does not occur upon its
closing.  Also, the FileOpenDialog does not leave a hole nor does the Color
Picker Dialog. So these Dialogs must be holding the contents of the screen
they are covering in a buffer and redisplaying that portion of the screen
they covered upon their closing.

Eric

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Ravi Singh
Sent: Friday, December 31, 1999 1:49 PM
To: [EMAIL PROTECTED]
Subject: Re: RE::[perl-win32-gui] Window->Show() Observation


I'm not sure if i completely understand the problem, but i believe that in
the style tag for the GUI dialogbox, if you use WS_VISIBLE, it will be shown
immediately, without the need for a ->show method.

Regards,
Ravi Singh
[EMAIL PROTECTED]
http://www.windows-shareware.com
----- Original Message -----
From: Cam Watson <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, December 31, 1999 12:31 PM
Subject: RE::[perl-win32-gui] Window->Show() Observation


> Hi,
>
> I was wondering if anyone came up with a solution to
> this problem (described below in Eric's message).  I'm
> encountering the same problem and when I searched the
> old messages I never found an answer or any further
> discussion in the thread.  Thanks for you time.
>
> Cam Watson
>
>
>
> Eric Hanson wrote:
> --------------------------------------------------------
> It appears that the show method does not fire until
> control returns to
> Win32::GUI::Dialog();  Aldo, is there any way we can
> get Show() programmed
> to fire immediately?  Please study my below example and
> the notes.
>
> Thanks,
> Eric Hansen
>
>
> # OK button click event for DialogBox #1
> sub D1OK_Click {
>    $D1->Disable();
>    $D2->Enable();
>    $D2->Show();
> }
>
> # OK button click event for DialogBox #2
> sub D2OK_Click {
>    $D2->Disable();
>    $D2->Hide();
>    $D1->Enable();
>    $D1->Show();   # Show() method does not fire till
> Do_Process completes
>                   # and control returns to
> Win32::GUI::Dialog()
>                   # since the DialogBox1 screen does
> not refresh till then.
>
>    Do_Process();  # call a subroutine to do some
> procedure code
> }
>
> sub Do_Process {
>    # procedure code executed here
> }
>
>
> =====
> Quote of the Day:
> __________________________________________________
> Do You Yahoo!?
> Talk to your friends online with Yahoo! Messenger.
> http://messenger.yahoo.com
>



Reply via email to