Question about Window#raise

I want to force my Frame to be visible under certain conditions, even if
it’s currently behind other windows. I am running under Windows XP. I
am
calling raise to do this, but the Frame doesn’t come to the front,
though
the icon does alert. Isn’t this what Window#raise is supposed to do?
Is
this a Windows issue?

Eric R.

Hi Eric

Eric R. wrote:

I want to force my Frame to be visible under certain conditions, even
if it’s currently behind other windows. I am running under Windows XP.
I am calling raise to do this, but the Frame doesn’t come to the
front, though the icon does alert. Isn’t this what Window#raise is
supposed to do? Is this a Windows issue?

Window#raise when applied to a managed (top-level) window should bring
it to the front - but only among the Frames of this application, not of
all the running desktop applications. It sounds like you actually want
to bring the whole application to the front, and I’m not aware of any
way of doing this in wxWidgets.

You might find Wx::TopLevelWindow#request_user_attention relevant:
http://wxruby.rubyforge.org/doc/toplevelwindow.html#TopLevelWindow_requestuserattention
(although the docs talk only about GTK and Windows, this also works on
OS X)

You might also look at this discussion on wxWidgets:
http://www.nabble.com/wxMac---Bring-application-to-front-td3851603.html

In one of the follow-ups it mentions a Windows-specific API call to
bring an application to the front. If this is really necessary, you may
find it possible to make this call via Ruby’s Win32API. You can get the
Windows-native id of a Frame using Wx::Window#get_handle

hth
alex