Tôi đang cố gắng phát hiện các thông báo nhập/rời chuột CM_MOUSEENTER
và CM_MOUSELEAVE
nhưng không bắt được. Tôi làm gì sai ở đây?Chuột Enter/Leave tin nhắn không hoạt động?
type
TMyControl = class(TCustomControl)
private
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
procedure TMyControl.CMMouseEnter(var Message: TMessage);
begin
//Handle mouse entering
//Breakpoint never reached, procedure never called
end;
procedure TMyControl.CMMouseLeave(var Message: TMessage);
begin
//Handle mouse leaving
//Breakpoint never reached, procedure never called
end;
procedure TMyControl.WMNCHitTest(var Message: TWMNCHitTest);
var
Ch: Bool;
begin
if csDesigning in ComponentState then
Message.Result := HTCLIENT
else begin
Ch:= False;
//Do checks and pass `Ch:= True;` if something changed...
if Ch then Invalidate;
end;
end;
Nhận xét đầu tiên của tôi không sử dụng điểm ngắt để theo dõi các nội dung như vậy. Giao diện người dùng tương tác luôn được điều chỉnh khi bạn chuyển sang trình gỡ lỗi. Sử dụng một cái gì đó như Codesite để gửi một tin nhắn đến một cửa sổ khác, và chắc chắn không thay đổi tiêu điểm trong khi theo dõi. – mj2008