Hi!
Ich hab ein kleines Problem. Ich möchte, dass wenn der Benutzer mit der Maus über einen Label geht sich dessen Farbe verändert. Kein Problem, das erreiche ich mit dem Mouse over Ereignis. Aber was wenn der Benutzer nun nicht mehr mit der Maus auf diese Label zeigt? Ein Mouse Out Ereignis gibt’s nicht, aber die Farbe sollte sich wieder zurückverändern…
Richtig, aber meine label sind alle am linken Rand des Forms. Wenn ich nun die maus auf einen der label bewege und dann ganz schnell nach links (also sich die maus nicht mehr auf meinem Programm befindet), bleib der Label logischerweise so wie als wenn die maus auf ihm wäre. Das kann ich ja schlecht mit den anderen Mouse over ereigneissen ausgleichen.
Wie kann ich den feststellen, ob sich die Maus gar nicht mehr über meinem Programm befindet?
Ich kenn mich in VB nicht aus, aber Windows sendet die Botschaften CM_MOUSEENTER und CM_MOUSELEAVE mit der WM_COMMAND - Botschaft.
Ansonsten mußt du die Maus capturen (SetCapture(hWnd)), dann werden auch die Mausbotschaften an das entsprechende Fenster (den Button) gesendet, wenn sich die Maus nicht mehr darüber befindet.
Als letztes fiele mir dann noch ein, daß zunächstmal eine WM_NCHITTEST - Botschaft gesendet wird, die als Ergebnis erstmal zurückgibt, ob sich die Maus im Fenster befindet. Möglicherweise wird die zunächst an den Button gesendet, wenn die Maus ihn verlassen hat. Dann stellt die Standard-Bearbeitung fest, daß sich die Maus nicht mehr im Fenster befindet und unterläßt eine WM_MOUSEMOVE - Botschaft.