[code] Win32 Moving/Showing/Hiding Toolbars and Dialogs
-
What I wanted to do was work out what flags to change to make a WebDialog into a ToolWindow. You haven't looked into that by any chance?
-
That would be an extended style WS_EX_TOOLWINDOW. I'm not sure that can be changed after run=time, but I will try it.
Styles:
http://msdn.microsoft.com/en-us/library/czada357%28VS.80%29.aspxExtended Styles:
http://msdn.microsoft.com/en-us/library/61fe4bte%28VS.71%29.aspx -
It can - I used to do it in Visual Basic when VB didn't offer full control over the windows. You can in fact change any window of any app - as long as you get its handle.
-
Yep, just did it. I'm just wondering of I am not writing a library that has already been written...
-
How quickly can you get the window handle when opening webdialogs? Can you avoid a flicker of change?
-
Good question I don't know the answer to, but wouldn't the reliable way be to have the dialog send a message back to ruby when it's ready?
Or can you change the dialog to a toolwindow before you .show() it? Will need to test.
-
Maybe the .show event of the dialog triggers as it's displayed? But I'm not sure if it wait for the HTML - which you do not want - as that will lag.
And can you do anything before calling show? You need a handle to the window - how are you getting that at the moment?
-
What does it mean when I get a negative value for a window style? How do I decode it into it's positive representation?
-
From GetWindowLong?
-
yeah.
s = get_style("Ruby Console") -1798569916
-
hm....
Are you receiving the data in the correct data type?
-
Turns out the negative return value is not a problem - I just wasn't using it right.
-
@thomthom said:
Maybe the .show event of the dialog triggers as it's displayed? But I'm not sure if it wait for the HTML - which you do not want - as that will lag.
And can you do anything before calling show? You need a handle to the window - how are you getting that at the moment?
Using FindWindow - which is a basic search by window name and class.
-
For a WebDialog, I couldn't find a handle until it was shown. I used EnumWindows and EnumChildWidows to locate it.
But I didn't see a lag when applying the ToolWIndow class immediately after .showing the webdialog.
-
Neat!
-
The Win32API.so file does not support the use of callbacks needed by EnumWindows and EnumChildWindows. So I have had to move to win32/api.so, which does support callbacks. But this will also allow more interesting things to be done, such as finding resizing Sketchup by its drawing area, and sending values to the Measurements box via a plugin.
-
When there is multiple SketchUp windows open - how do you find the one you want?
-
Hopefully, the window titles are different. If not, I'm not sure.
-
So you look for windows with "<filename> - SketchUp (Pro)"
-
Too fast... here's how to get the exact name. (But is_pro? is for windows 7+)
def su_window_name pro = Sketchup.is_pro? ? " Pro" ; "" if ((title = Sketchup.active_model.title).empty?) return ("Untitled - SketchUp" + pro) else return (title += ".skp - SketchUp" + pro) end end
Advertisement