Mouse Position Frage
-
Also ich hab ein Static Feld ( IDC_STATIC ).
Jetzt moechte ich, dass dieses Static Feld wenn ich mit der Maus drueber gehe, eine MessageBox erscheinen lasse.Wie ueberpruefe ich ob ich mit der Maus ueber dem Static bin ?
-
Subclassing -> http://winapi.net/index.php?inhalt=s27
-
Ein Static bekommt keine Mausnachrichten sofern nicht SS_NOTIFY gesetzt wird.
Allerdings kannst Du es einfacher haben. Die WM_MOUSEMOVE Nachricht geht direkt an das Parent also den Dialog. Du könntest also einen WM_MOUSEMOVE Handler im Dialog platzieren, der dann prüft ob die Cursorposition in dem Rect des Statics liegt.
-
Martin Richter schrieb:
Ein Static bekommt keine Mausnachrichten sofern nicht SS_NOTIFY gesetzt wird.
Also meine schon
.
-
Alles klar klappt

Edit : Gibts ne Funktion die direkt ueberpruefen kann ob die Mausposition im Rect liegt ?
-
PhoeNix_FasT schrieb:
Alles klar klappt

Edit : Gibts ne Funktion die direkt ueberpruefen kann ob die Mausposition im Rect liegt ?
PtInRect IMHO oder PointInRect
-
CodeFinder schrieb:
Martin Richter schrieb:
Ein Static bekommt keine Mausnachrichten sofern nicht SS_NOTIFY gesetzt wird.
Also meine schon
.Ohne SS_NOTIFY reagieren Static Controls in WM_NCHITTEST mit HTTRANSPARENT. Das bewirkt, dass die Mausnachrichten an das darunter liegende Fenster gesendet werden.
Wie bekommst Du von einem CStatic Mausnachrichten?
-
Martin Richter schrieb:
CodeFinder schrieb:
Martin Richter schrieb:
Ein Static bekommt keine Mausnachrichten sofern nicht SS_NOTIFY gesetzt wird.
Also meine schon
.Ohne SS_NOTIFY reagieren Static Controls in WM_NCHITTEST mit HTTRANSPARENT. Das bewirkt, dass die Mausnachrichten an das darunter liegende Fenster gesendet werden.
Wie bekommst Du von einem CStatic Mausnachrichten?
Hm über SubClassing. Aber es ist ein Std-Win-Control, _kein_ MFC.
-
Das spielt an sich keine Rolle. Das ist eine Funktion des Standard_Satic Controls. WM_NCHITTEST wird eben mit HTTRANSPARENT beantwortet. D.h. es kommt niemals ein WM_MOUSEMOVE an. Das müsste man auch mit dem Spy++ sichtbar machen können.
-
Ups,
... mir ist grad aufgefallen, dass es sich gar nicht um Std-Win-Controls handelt, sondern um meine eigene Klasse
... . Die stellt auch Static-Controls dar, nur ganz anders^^ ... Hab das verwechselt, my fault!Obwohl ich das mit den std-Static-Controls noch nie probiert habe...Man kann doch auch Klicks abfangen (via SubClassing) oder ? (ohne das Flag SS_NOTIFY
)
-
Nein! Ohne SS_NOTIFY oder überschreiben von WM_NCHITTEST geht da nichts.