• Login
sketchucation logo sketchucation
  • Login
πŸ€‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

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

Scheduled Pinned Locked Moved Developers' Forum
91 Posts 8 Posters 15.9k 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 Offline
    Jim
    last edited by 26 Sept 2010, 16:58

    What does it mean when I get a negative value for a window style? How do I decode it into it's positive representation?

    Hi

    1 Reply Last reply Reply Quote 0
    • T Offline
      thomthom
      last edited by 26 Sept 2010, 16:59

      From GetWindowLong?

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

      1 Reply Last reply Reply Quote 0
      • J Offline
        Jim
        last edited by 26 Sept 2010, 17:06

        yeah.

        s = get_style("Ruby Console") -1798569916

        Hi

        1 Reply Last reply Reply Quote 0
        • T Offline
          thomthom
          last edited by 26 Sept 2010, 17:14

          hm....

          Are you receiving the data in the correct data 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 Offline
            Jim
            last edited by 26 Sept 2010, 23:25

            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 Offline
              Jim
              last edited by 26 Sept 2010, 23:41

              @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 Offline
                Jim
                last edited by 27 Sept 2010, 17:41

                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
                • T Offline
                  thomthom
                  last edited by 27 Sept 2010, 20:17

                  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 Offline
                    Jim
                    last edited by 27 Sept 2010, 21:25

                    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
                    • T Offline
                      thomthom
                      last edited by 29 Sept 2010, 13:38

                      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 Offline
                        Jim
                        last edited by 29 Sept 2010, 13:52

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

                        Hi

                        1 Reply Last reply Reply Quote 0
                        • T Offline
                          thomthom
                          last edited by 29 Sept 2010, 13:55

                          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 Offline
                            Jim
                            last edited by 29 Sept 2010, 13:57

                            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
                            • T Offline
                              thomthom
                              last edited by 29 Sept 2010, 13:59

                              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 Offline
                                Jim
                                last edited by 29 Sept 2010, 14:00

                                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
                                • T Offline
                                  thomthom
                                  last edited by 29 Sept 2010, 14:03

                                  @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
                                  • T Offline
                                    thomthom
                                    last edited by 29 Sept 2010, 14:13

                                    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
                                    • J Offline
                                      JD Hill
                                      last edited by 1 Oct 2010, 13:05

                                      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
                                      • T Offline
                                        thomthom
                                        last edited by 4 Oct 2010, 12:34

                                        @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
                                        • T Offline
                                          thomthom
                                          last edited by 4 Oct 2010, 15:40

                                          '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
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 1 / 5
                                          1 / 5
                                          • First post
                                            18/91
                                            Last post
                                          Buy SketchPlus
                                          Buy SUbD
                                          Buy WrapR
                                          Buy eBook
                                          Buy Modelur
                                          Buy Vertex Tools
                                          Buy SketchCuisine
                                          Buy FormFonts

                                          Advertisement