Announcement

Collapse
No announcement yet.

Maus Botschaften

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

  • Maus Botschaften

    Hi!!

    ich habe in meiner Anwendung die WM_RBUTTONDOWN Botschaft. Nun möchte ich jedes Wort meiner Anwenung in einer MessageBox zeige, sobald ich es angeklickt. Es soll immer funktionieren. Beim klicken auf einem Button oder beim Klicken auf ein label z.B.. Liefert die Botschaft WM_RBUTTONDOWN einen Wert zurück, der mir die Information gibt? Wenn, dann gibt mir bitte ein kleines Beispiel.

    Gruß Philipp

  • #2
    Hallo Phillip, was hast Du ? bitte etwas genauer ! Du kannst einmal zu jeder Komponente die Mausereignisse abfangen, oder global mittels MESSAGE_MAP. Wie machst Du das jetzt ? Was ist das "Wort Deiner Anwendung" ? Was willst Du mit dem Wert von WM_RBUTTONDOWN ? Der ist übrigens in irgendeiner Headerdatei definiert, vermutlich in Windows.h. Bis gleich (?) Günthe
    Günther

    Comment


    • #3
      Hallo Günther,

      wie gesagt habe ich in meiner Anwendung die WM_RBUTTONDOWN Botschaft. Nun möchte ich gerne das Wort anzeigen, auf das ich mit der Muas drücke. Wenn ich z.B. auf ein Button klicke, möchte ich das Wort haben, welches gerade angeklickt wurde. So wie der Babylon Translater.

      Gruß Philip

      Comment


      • #4
        Also willst Du den Text haben, der unter Deinem Mauscursor steht. Das ist schon etwas schwieriger. Das Kann ich Dir jetzt auf Anhieb nicht sagen. Wenn mir etwas einfällt, melde ich mich. Günthe
        Günther

        Comment


        • #5
          Hallo Phillip,

          ich glaube ich verstehe Dein Problem. Normaler has ja jedes Element seine eigene Nachrichtenwarteschlange. Sodass Du jedem Element den gleichen Event zuordnen müsstes. Ich denke aber mal, dass Du nur über Windowssteuerelemente (oder zumindest Derivate davon) verwendest.

          Somit könntest Du einen Windows-Hook SetWindowsHookEx setzen, der die Mausnachrichten abfängt. Wenn Du die Mausnachrichten bekommst sind dann ja auch die Koordinaten dabei. Diese wiederrum kannst Du in der Funktion WindowFromPoint verwenden. Dort bekommst Du einen Handle auf das Fenster, über dem sich die Maus gerade befindet. Mit der Funktion GetWindowText bekommst Du schließlich den Text.

          Sorry, dass ich keinen Beispielcode habe, aber der wäre hier ein bischen zu aufwendig, für eine kurze Erklärung. Möglicherweise gibt es auch noch andere Möglichkeiten, aber um den Hook wirst Du nicht herumkommen. Schau vielleich mal in die Klassen Screen und Application rein vielleicht wirst Du auch dort fündig.

          Gruß, Marti

          Comment


          • #6
            Hi,

            danke fü den Tip. Das ich einen Maus Hook brauche wahr mir schon klar, wenn es Systemweit funktionieren soll. Aber für die API Funktion WindowFromPoint benötige ich die linke obere Ecke um das Handle eines Steuerelements zu ermitteln. Sonst ist deine Idee ganz gut. Dann brauchte ich nur noch eine Idee, wie das in einem RichEdit, Memo, ListBox, ... luft, aber wenn man erstmal den Anfang hat, dann klappt der Rest auch schon, denn eine kleine Idee habe ich schon wieder.

            Gruß Philip

            Comment


            • #7
              Hallo,

              sorry, aber den letzten Teil deiner Nachricht habe ich nicht ganz verstanden, denn Du bekommst doch die Koordinaten mit dem Windows Hook und bei RichEdit, Memo usw dürfte es doch auch funktionieren, denn die haben haben auch einen Handle und werden - galueb ich - auch SetWindowText gesteuert. Ansonsten, um alles abzudecken müsstest du auf RTTI zurüchgreifen und jedes Element einzeln via Klassennamen identifizieren.

              Gruß, Marti

              Comment


              • #8
                Hi,

                ich erhalte zwar die Koordinaten in Memo un anderen Komponneten. Doch ich will das Wort haben, auf dem ich klicke. Bei einem Button will ich z.B. nur den Text haben, wenn ich auf ihn klicke und nicht nur einfach irgendwo auf dem Button. In einem Memo müßte ich dann links und rechts von den Koordinaten etwas prüfen, um mir das Wort zusammensetzen, auf dem Ich geklickt habe. Ich glaube nämlich nicht, dass ich mit SetWindowText das Wort unter der Koordinate erhalte. Das mit dem Memo und so wäre ja kein Problem, bloß ich ich beim Button auf den Text oder auf eine leere Fläche drücke ist für mich gerade nicht zu ermitteln. Und wie ist es z.B. mit der HTML Komponente. Ich brauche eigentlich die Funktion, wie die des Babylon Translaters, nur damit du genau wei0 was ich Suche. Den Hook zu erzeugen dürfte kein größeres Problem darstellen.

                Philip

                Comment


                • #9
                  Hallo

                  Ich bin noch relativ neu in der C++ Programmierung. Deswegen würde mich ein grundlegendes Beispiel interessieren, wie ich eine beliebige Windows Botschaft meiner Anwendung abfangen kann (ich verwende den Borland C++ Builder). In Delphi weiß ich wie das ganze funktioniert, allerdings habe ich es nicht geschafft, das auf den BCB zu übertragen :-(

                  mfg Silve

                  Comment


                  • #10
                    Hier in diesem Ordner gibt es die Diskussion

                    <b>"wie window messages abfangen?"</b>

                    Wenn dann noch Fragen offen sind - nur zu
                    Günther

                    Comment

                    Working...
                    X