Ich verarbeite bei einer Komponente (abgeleitet von TCustomControl) die Nachrichten CM_MOUSELEAVE und CM_MOUSEENTER.
Es funktioniert alles einwandfrei, allerdings habe ich das Problem, dass wenn ich einen Doppelklick auf die Komponente mache, dass die Komponente anscheinend nicht mehr verlassen wird. Egal wo ich nun im Programm klicke (selbst andere Forms, die von diesem geöffnet wurden), die Nachrichten gehen an diese Komponente.
Erst, wenn ich ein anderes Fenster (das NICHT zu meinem Programm gehört) betrete und dann zurück in mein Programm gehe, dann läuft alles wieder normal.
In der Methode zur Verarbeitung von CM_MOUSELEAVE habe ich folgendes stehen:
Delphi-Quellcode:
procedure TForm2.CMMouseLeave(var Msg: TMessage);
var
p : TPoint;
begin
inherited;
GetCursorPos(p);
if WindowFromPoint(p)<>Self.Handle then
begin
fmbdown := false;
frbdown := false;
fDoShowHint := false;
end;
end;
- fmbdown wird in WM_LBUTTONDOWN auf true gesetzt (bei WM_LBUTTONUP wieder auf false)
- frbdown wird in WM_RBUTTONDOWN auf true gesetzt (bei WM_RBUTTONUP wieder auf false)
- fDoShowHint wird über Timer auf true bzw. false gesetzt und gibt an, wenn eine eigene Hint-Box angezeigt werden soll.