Nachrichten immer erhalten


  • Administrator

    Grüsse zusammen,

    Ich möchte das ein Fenster die WM_MOUSEMOVE Nachricht auch erhält und darauf reagieren kann, auch wenn dieses Fenster den Fokus nicht hat. Es soll aber dem Fenster mit dem Fokus nicht die Nachricht wegnehmen, womit SetCapture in der Lösungsauwahl ausgeschlossen ist. Wie könnte ich sowas realisieren? Bzw. gibt es da schon was? Ich suche selber noch weiter, wäre aber dankbar für eine kleine Unterstützung.

    Grüssli




  • Administrator

    Danke, ich schau mir das mal an.

    Grüssli


  • Administrator

    Hmmm ... also ich hab mich da mal ein wenig eingelesen und angeschaut ein wenig getestet und co. Doch ich frag mich ob das wirklich das richtige ist.

    Ich will ja nur, dass ein Fenster erkennt, wann die Maus über ihm ist. Und das auch, wenn es halt kein Fokus hat, bzw. ein anderes Fenster derzeit aktiviert ist (von mir aus sogar nur in der gleichen Prozedur, also nicht global). Mit diesen Hooks kann ich aber zig Trillionen Nachrichten (auch mit den Filtern) abhandeln und ich brauche daraus immer nur eine, ob das sinnvoll ist? Gibt es da keine einfachere weniger komplizierte Lösung? Damit mein Fenster einfach immer eine MouseMove Message bekommt, sobald die Maus in ihrem Bereich ist, egal welcher Zustand das Fenster hat?

    Mit den Hooks muss ich ja eine static Funktion übergeben, welche aufgerufen wird. Dort erhalte ich dann alle Mausnachrichten, filtere die WM_MOUSEMOVE raus und muss dort noch bestimmen, ob sich die Cursor Position im entsprechenden Fenster befindet, was aber gar nicht so einfach ist, da wir ja eine Static Funktion definiert haben. Und jetzt hier eine Möglichkeit aufzubauen, wie man immer eine Static Variable aktuell behalten kann, mit einem Zeiger auf das eigentliche Fenster ... das ist ja krank! Eine riesen Arbeit für am Ende nichts.

    Nochmals, gibt es keine einfachere Lösung?

    Grüssli



  • Dravere schrieb:

    Ich will ja nur, dass ein Fenster erkennt, wann die Maus über ihm ist. Und das auch, wenn es halt kein Fokus hat, bzw. ein anderes Fenster derzeit aktiviert ist...

    guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/cursors/cursorreference/cursormessages/wm_setcursor.asp


  • Mod

    WM_MOSEMOVE kommt doch immer an, unabhängig vom Fokus!


  • Administrator

    Danke Martin, leider zu spät. Wollte es grad auch hinschreiben, das Problem lag wo anderst. Sorry Leute, dass ich eure Zeit vergeudet habe ^^

    Ich hatte ein CComboBox erzeugt mit dem Style CBS_DROPDOWNLIST. Hab es aber erst zum Test reingemacht und noch keine Werte reingeschrieben. Wenn ich es angeklickt habe, dann kam keine WM_MOUSEMOVE Message mehr an, nirgends. Inzwischen weiss ich wieso. Hatte das Fenster zu klein gemacht, somit erschien die Dropdownliste nicht und da ich keine Werte reingeschrieben hatte, hat mich dies auch nicht verwundert. Doch genau da lag das Problem begraben. Beim ersten klicken wurde die Dropdownliste geöffnet und darauf gewartet das man was auswählt. Dadurch kam keine Nachricht mehr nirgends an und ich hab ja nicht gemerkt, dass sie offen war 😉
    2.5 Stunden verloren, wegen so einem Scheiss ... ich könnt mich verhauen.

    Danke trotzdem. Und mindesten hab ich was über HOOKs gelernt, was ich vielleicht später einmal irgendwo einsetzen kann ^^

    Grüssli


Anmelden zum Antworten