sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    ⚠️ Update | Sketchucation Tools 5.0.8 released with licensing improvements and bugfixes Download

    [code] Win32 Moving/Showing/Hiding Toolbars and Dialogs

    Scheduled Pinned Locked Moved Developers' Forum
    91 Posts 8 Posters 23.7k Views 8 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      Jim
      last edited by

      Turns out the negative return value is not a problem - I just wasn't using it right.

      Hi

      1 Reply Last reply
      Reply Quote 0
      • J
        Jim
        last edited by

        @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.

        Hi

        1 Reply Last reply
        Reply Quote 0
        • J
          Jim
          last edited by

          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.

          Hi

          1 Reply Last reply
          Reply Quote 0
          • thomthomT
            thomthom
            last edited by

            Neat! πŸ˜„

            Thomas Thomassen β€” SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply
            Reply Quote 0
            • J
              Jim
              last edited by

              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.

              Hi

              1 Reply Last reply
              Reply Quote 0
              • thomthomT
                thomthom
                last edited by

                When there is multiple SketchUp windows open - how do you find the one you want?

                Thomas Thomassen β€” SketchUp Monkey & Coding addict
                List of my plugins and link to the CookieWare fund

                1 Reply Last reply
                Reply Quote 0
                • J
                  Jim
                  last edited by

                  Hopefully, the window titles are different. If not, I'm not sure.

                  Hi

                  1 Reply Last reply
                  Reply Quote 0
                  • thomthomT
                    thomthom
                    last edited by

                    So you look for windows with "<filename> - SketchUp (Pro)"

                    Thomas Thomassen β€” SketchUp Monkey & Coding addict
                    List of my plugins and link to the CookieWare fund

                    1 Reply Last reply
                    Reply Quote 0
                    • J
                      Jim
                      last edited by

                      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
                      
                      

                      Hi

                      1 Reply Last reply
                      Reply Quote 0
                      • thomthomT
                        thomthom
                        last edited by

                        But when there is two untitled windows there could be problems?

                        Thomas Thomassen β€” SketchUp Monkey & Coding addict
                        List of my plugins and link to the CookieWare fund

                        1 Reply Last reply
                        Reply Quote 0
                        • J
                          Jim
                          last edited by

                          Yes, but in that case how would any program know which one the user meant?

                          You can find all of the matching windows. It's just hard to know which the user meant to use.

                          Hi

                          1 Reply Last reply
                          Reply Quote 0
                          • thomthomT
                            thomthom
                            last edited by

                            @jim said:

                            Yes, but in that case how would any program know which one the user meant?

                            If you'd created the window then you'd get the handle from there. (Would be nice if the API could expose the handles in the Ruby API)

                            I suppose that if it is possible to get an array of matching windows one could filter out the window you want by checking if one of them is the active - if it's the active SU window you want. (Assuming SU is the currently active window)
                            Or maybe by Z-Order? Assuming that the top most is the most recent - again if that is what you want...

                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                            List of my plugins and link to the CookieWare fund

                            1 Reply Last reply
                            Reply Quote 0
                            • thomthomT
                              thomthom
                              last edited by

                              In most cases you'd get the window the user is working on, right?
                              So how about
                              GetForegroundWindow - then, in case one of the toolbars or webdialogs are the active window, iterate down the hierarchy using GetParent - checking for matching window title?

                              Thomas Thomassen β€” SketchUp Monkey & Coding addict
                              List of my plugins and link to the CookieWare fund

                              1 Reply Last reply
                              Reply Quote 0
                              • JD HillJ
                                JD Hill
                                last edited by

                                If you have an API which supports EnumWindows, you can use GetProcessId and GetWindowThreadProcessId to filter on windows in the current process.

                                Developer - Bella Render

                                1 Reply Last reply
                                Reply Quote 0
                                • thomthomT
                                  thomthom
                                  last edited by

                                  @jim said:

                                  But I didn't see a lag when applying the ToolWIndow class immediately after .showing the webdialog.

                                  You got a snippet of how you applied the ToolWindow style?

                                  Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                  List of my plugins and link to the CookieWare fund

                                  1 Reply Last reply
                                  Reply Quote 0
                                  • thomthomT
                                    thomthom
                                    last edited by

                                    'N' instead of 'L'?
                                    hm.. I'm a wee bit confused to exactly when to use what type...

                                    Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                    List of my plugins and link to the CookieWare fund

                                    1 Reply Last reply
                                    Reply Quote 0
                                    • J
                                      Jim
                                      last edited by

                                      From the pick-axe book:

                                      @unknownuser said:

                                      Strings n'' and l'' represent numbers,
                                      i'' represent integers, p'' represents pointers to data stored in a string
                                      ``v'' represents a void type (used for export parameters only).
                                      These strings are case-insensitive.

                                      So I guessed you just use the type that is the best match to the API call parameters. In other words, your guess is as good as mine.

                                      Hi

                                      1 Reply Last reply
                                      Reply Quote 0
                                      • thomthomT
                                        thomthom
                                        last edited by

                                        is N === L ? "Number" vs Integer? Number == Float?

                                        Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                        List of my plugins and link to the CookieWare fund

                                        1 Reply Last reply
                                        Reply Quote 0
                                        • thomthomT
                                          thomthom
                                          last edited by

                                          I got lots of errors when I tried the Toolwindow snippet in the first post. Seems that a few constants where missing from the snippet.

                                          I found them though, and I tried another way to get the window handle.

                                          CustomWindow.png

                                          <span class="syntaxdefault"><br /></span><span class="syntaxcomment">#&nbsp;http://ruby-doc.org/docs/ProgrammingRuby/html/lib_windows.html#Win32API.new<br /><br /></span><span class="syntaxkeyword">require&nbsp;</span><span class="syntaxstring">'Win32API'<br /><br /></span><span class="syntaxdefault">WS_CAPTION&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x00C00000<br />WS_EX_TOOLWINDOW&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x00000080<br /><br />GWL_STYLE&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;-</span><span class="syntaxdefault">16<br />GWL_EXSTYLE&nbsp;</span><span class="syntaxkeyword">=&nbsp;-</span><span class="syntaxdefault">20<br /><br /></span><span class="syntaxcomment">#&nbsp;SetWindowPos()&nbsp;flags<br /></span><span class="syntaxdefault">SWP_NOSIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x0001<br />SWP_NOMOVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x0002<br />SWP_DRAWFRAME&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x0020<br />SWP_FRAMECHANGED&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x0020<br />SWP_NOREPOSITION&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0x0200<br /><br /></span><span class="syntaxcomment">#&nbsp;Windows&nbsp;Functions<br />#FindWindow&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;Win32API.new("user32.dll"&nbsp;,&nbsp;"FindWindow"&nbsp;&nbsp;&nbsp;,&nbsp;'PP'&nbsp;,&nbsp;'L')<br />#FindWindowEx&nbsp;&nbsp;=&nbsp;Win32API.new("user32.dll",&nbsp;"FindWindowEx"&nbsp;,&nbsp;'LLPP',&nbsp;'L')<br /></span><span class="syntaxdefault">SetWindowPos&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Win32API</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"user32.dll"&nbsp;</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"SetWindowPos"&nbsp;</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'LLIIIII'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'I'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">SetWindowLong&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Win32API</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"user32.dll"&nbsp;</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"SetWindowLong"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'LIL'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'L'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">GetWindowLong&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Win32API</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"user32.dll"&nbsp;</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"GetWindowLong"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'LI'&nbsp;</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'L'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">GetActiveWindow&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Win32API</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"user32.dll"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"GetActiveWindow"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">''</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'L'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxcomment">#GetForegroundWindow&nbsp;=&nbsp;Win32API.new("user32.dll",&nbsp;"GetForegroundWindow",&nbsp;'',&nbsp;'L')<br /></span><span class="syntaxdefault">GetWindowText&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Win32API</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"user32.dll"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"GetWindowText"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'LPI'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'I'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">GetWindowTextLength&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Win32API</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"user32.dll"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"GetWindowTextLength"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'L'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'I'</span><span class="syntaxkeyword">)<br /><br /><br /></span><span class="syntaxdefault">def&nbsp;create_toolbar_window<br />&nbsp;&nbsp;window&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">UI</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">WebDialog</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">'My&nbsp;Test&nbsp;Window'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">false</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">window</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">set_html</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'<br />&nbsp;&nbsp;<html><br />&nbsp;&nbsp;<head><br />&nbsp;&nbsp;<style&nbsp;type="text/css"><br />&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font;&nbsp;caption;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background;&nbsp;ButtonFace;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;hr&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border;&nbsp;none;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border-top;&nbsp;1px&nbsp;solid&nbsp;ThreeDShadow;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border-bottom;&nbsp;1px&nbsp;solid&nbsp;ThreeDHighlight;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;</style><br />&nbsp;&nbsp;</head><br />&nbsp;&nbsp;<body><br />&nbsp;&nbsp;&nbsp;&nbsp;<b>My&nbsp;very&nbsp;own&nbsp;window</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<hr&nbsp;/><br />&nbsp;&nbsp;&nbsp;&nbsp;Neato!<br />&nbsp;&nbsp;</body><br />&nbsp;&nbsp;</html><br />&nbsp;&nbsp;'</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">window</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">show<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;</span><span class="syntaxcomment">#&nbsp;Find&nbsp;the&nbsp;new&nbsp;window&nbsp;-&nbsp;should&nbsp;get&nbsp;it&nbsp;by&nbsp;GetActiveWindow&nbsp;since&nbsp;wd.show&nbsp;brings<br />&nbsp;&nbsp;#&nbsp;the&nbsp;window&nbsp;to&nbsp;front.<br />&nbsp;&nbsp;</span><span class="syntaxdefault">hwnd&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">GetActiveWindow</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call<br />&nbsp;&nbsp;</span><span class="syntaxcomment">#hwnd&nbsp;=&nbsp;GetForegroundWindow.call<br />&nbsp;&nbsp;#hwnd&nbsp;=&nbsp;FindWindow.call(DIALOG_CLASS,&nbsp;window_title)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;hwnd<br /><br />&nbsp;&nbsp;puts&nbsp;</span><span class="syntaxstring">'Check&nbsp;Window&nbsp;Text'<br />&nbsp;&nbsp;</span><span class="syntaxdefault">buf_len&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">GetWindowTextLength</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">str&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'&nbsp;'&nbsp;</span><span class="syntaxkeyword">*&nbsp;(</span><span class="syntaxdefault">buf_len&nbsp;</span><span class="syntaxkeyword">+&nbsp;</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;GetWindowText</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">str</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">str</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;str<br />&nbsp;&nbsp;p&nbsp;str</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">strip<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;</span><span class="syntaxcomment">#&nbsp;Change&nbsp;Window&nbsp;Style<br />&nbsp;&nbsp;</span><span class="syntaxdefault">style&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">GetWindowLong</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">GWL_EXSTYLE</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;style<br />&nbsp;&nbsp;p&nbsp;SetWindowLong</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">GWL_EXSTYLE</span><span class="syntaxkeyword">,&nbsp;&nbsp;</span><span class="syntaxdefault">style&nbsp;</span><span class="syntaxkeyword">|&nbsp;</span><span class="syntaxdefault">WS_EX_TOOLWINDOW</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;SetWindowPos</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">SWP_FRAMECHANGED</span><span class="syntaxkeyword">|</span><span class="syntaxdefault">SWP_NOSIZE</span><span class="syntaxkeyword">|</span><span class="syntaxdefault">SWP_NOMOVE</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end<br /></span>
                                          

                                          The code needs error checking and such.
                                          (maybe it's because I'm not error checking yet that I some times experience that the window automatically closes after a few seconds. it has happened only sporadically...)


                                          win32.rb

                                          Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                          List of my plugins and link to the CookieWare fund

                                          1 Reply Last reply
                                          Reply Quote 0
                                          • thomthomT
                                            thomthom
                                            last edited by

                                            Removing the maximize and minimize button: (Addition to the code in my previous post)

                                            <span class="syntaxdefault"><br />&nbsp;&nbsp;WS_MAXIMIZEBOX&nbsp;</span><span class="syntaxkeyword">=&nbsp;&nbsp;</span><span class="syntaxdefault">0x10000<br />&nbsp;&nbsp;WS_MINIMIZEBOX&nbsp;</span><span class="syntaxkeyword">=&nbsp;&nbsp;</span><span class="syntaxdefault">0x20000<br />&nbsp;&nbsp;WS_SIZEBOX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">=&nbsp;&nbsp;</span><span class="syntaxdefault">0x40000<br /><br />&nbsp;&nbsp;</span><span class="syntaxcomment">#&nbsp;Remove&nbsp;Buttons<br />&nbsp;&nbsp;#&nbsp;http://support.microsoft.com/kb/137033<br />&nbsp;&nbsp;</span><span class="syntaxdefault">style&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">GetWindowLong</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">GWL_STYLE</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;style<br />&nbsp;&nbsp;style&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">style&nbsp;</span><span class="syntaxkeyword">&&nbsp;~</span><span class="syntaxdefault">WS_MINIMIZEBOX<br />&nbsp;&nbsp;style&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">style&nbsp;</span><span class="syntaxkeyword">&&nbsp;~</span><span class="syntaxdefault">WS_MAXIMIZEBOX<br />&nbsp;&nbsp;</span><span class="syntaxcomment">#style&nbsp;=&nbsp;style&nbsp;&&nbsp;~WS_SIZEBOX<br />&nbsp;&nbsp;</span><span class="syntaxdefault">p&nbsp;SetWindowLong</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">call</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">hwnd</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">GWL_STYLE</span><span class="syntaxkeyword">,&nbsp;&nbsp;</span><span class="syntaxdefault">style</span><span class="syntaxkeyword">)<br />&nbsp;</span><span class="syntaxdefault"></span>
                                            

                                            This prevents the window from maximising when double-clicking. Seems to introduce some frame flicker.
                                            Can GWL_STYLE and GWL_EXSTYLE changes be combines into one call?

                                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                            List of my plugins and link to the CookieWare fund

                                            1 Reply Last reply
                                            Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better πŸ’—

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 2 / 5
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement