Announcement

Collapse
No announcement yet.

Mausposition außerhalb des Programmes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mausposition außerhalb des Programmes

    Hallo!

    Wie kann man ermitteln, ob sich die Maus außerhalb eines Programmfensters oder auch innerhalb des selbigen befindet? Oder gibt es eine Möglichkeit festzustellen, wann die Maus das Programmfenster verlässt?

    Vielen Dank!

  • #2
    Hallo Uwe,

    ich fürchte da mußt Du dich mit der Windows SDk herumschlagen. bei der Hilfe in meiner Version (C++ Builder 2007) ist das unter dem Suchbegriff Mouse input erläutert.

    grundsätzlich teilt Dir das Betriebssystem die absoluten Mauskoordinaten mit. Anhand der Top, Left etc. Properties Deiner Anwendung kannst Du dann ermitteln, ob sich die Maus noch im Fenster der Anwendung befindet oder nicht!

    Comment


    • #3
      Hallo!

      Also ich arbeite noch nicht so lange mit dem BCB und kenn mich bei den ganzen Funktionen noch nicht so Gut aus. Könnte mir einer ein paar Befehle nennen, die ich mir genauer anschauen sollte. OnMouseMove (und so) kann ich nur innerhalb des Programmes verwenden. Nur: ich bräuchte halt etwas um zu ermitteln, wann die Maus das Programm verläßt.

      Danke schon mal...
      Grüße

      Comment


      • #4
        Ich würde Dir ja gerne einen Beispielcode geben, aber so gut bin ich damit auch nicht vertraut.

        Jedes Formular (also Fenster) hat einen OnMouseLeave - Event. Der wird ausgelöst, wenn die Maus das fenster verläßt, eigentlich genau das was Du willst. leider aber wird dieser Event auch ausgelöst wenn die Maus im Fenster auf z.B. eine Listbox gezogen wird.

        Comment


        • #5
          Schau Dir mal TMouse in der BCB-Hilfe an. Damit läßt sich die Mausposition auf dem Desktop ermitteln. Da Du Top, Left, Width und Height des Formulares kennst, kannst du einfach ausrechnen, ob sich die Maus über dem Fenster befindet, oder nicht.

          Grüße Jochen

          Comment


          • #6

            du einfach ausrechnen
            oder PtInRect benutzen

            http://www.marquardtnet.info/cecke/q...quicky_41.html
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              oder PtInRect benutzen
              Kannte ich noch gar nicht. Wieder was gelernt. Danke schön.

              Jochen

              Comment


              • #8
                OnMouseEnter & OnMouseLeave des Formulars bringen es nicht??
                Christian

                Comment


                • #9
                  Hallo!

                  Also! "OnMouseEnter" und "OnMouseLeave" habe ich bei mir nicht gefunden. Kann sein, daß das an der Version liegt. Da ich mich erst seid kurzem mit dem C++ Builder beschäftige, habe ich mir bei ebay nur eine kleine Version; spich: "C++ Builder 5 Enterprise" geholt. Ich denke mal, das sollte zum lernen der Sprache ausreichend sein(?)! Sollte ich feststellen, das diese Umgebung besser als VB ist, werde ich bestimmt komplett umsteigen und mir einen der großen Brüder zulegen. Aber bis dahin??????

                  Ich hab mir aber mal die TMouse angeschaut und bin auch fündig geworden. Nun hab ich jedoch das Problem, das ich nicht weiß, wo ich dies Im Quellcode positionieren muss? Könnt Ihr mir da einen Tipp geben?

                  DiV Uwe.

                  Comment


                  • #10
                    Nun hab ich jedoch das Problem, das ich nicht weiß, wo ich dies Im Quellcode positionieren muss? Könnt Ihr mir da einen Tipp geben?
                    Würde sagen in Zeile 324
                    Christian

                    Comment


                    • #11
                      Ich nehm dafür immer die Winzigweich API Funktion
                      BOOL GetCursorPos( LPPOINT lpPoint);

                      und dann einfach mit den Fensterkoordinaten vergleichen.

                      http://msdn2.microsoft.com/en-us/library/ms648390.aspx

                      Comment

                      Working...
                      X