OnMouseMove bei Steuerelementen



  • Mit der Funktion OnMouseMove kan man sich die x/y Koordinaten der Maus übermitteln lassen. Das funktioniert allerdings nicht wenn die Maus auf Steuerelemente wie z.B. Listboxen oder Buttons zeigt. Weiss jemand warum das so ist?
    Aber vielleicht ist OnMouseMove für meinen Anwendungsfall sowieso nicht die richtige Funktion; was ich brauche ist eine Funktion, die wenn die Maus über meine Listbox gezogen wird einen "Anzeigetext" erscheinen lässt damit der User weiss was für Daten sich hier befinden.



  • Hi,

    Du solltest dazu die Funktion
    OnMouseMove für jedes Fenster (auch für die listbox)
    definieren.

    Du kannst die Mausposition auch global
    abfangen (NC_...).

    tomb



  • Suchst du sowas wie MouseHover?



  • Darf ich noch einmal nerven?

    wie definiere ich OnMouseMove für jedes einzelne Fenster (Listbox), bzw. wie fange ich die Maus-Position global ab? Ich habe nichts gefunden 😞



  • Besser zu spät als nie !!! 🙄
    Hier eine Lösung :

    entwerfe eine eigene Klasse
    als unterklasse von Listbox

    Header:

    class MousListBox : public Listbox
    {
    MouseListBox();
    ~MouseListBox();
             // Generierte Nachrichtenzuordnungsfunktionen
    	//{{AFX_MSG(MousListBox )
    	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    	//}}AFX_MSG
    CPoint Koordinaten;
    }
    
    //Source:
    
    BEGIN_MESSAGE_MAP(MousListBox , CListBox)
    	//{{AFX_MSG_MAP(MousListBox )
    	ON_WM_MOUSEMOVE()
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    void CColListBox::OnMouseMove(UINT nFlags, CPoint point) 
    {
             Koordinaten = point;
    	CWnd::OnMouseMove(nFlags, point);
    }
    

    Nun benutzt du in deinem Programm einfach die Klasse MouseListbox
    anstatt Listbox und hast immer die Koordinaten in der Variable
    "Koordinaten" zur verfügung


Anmelden zum Antworten