Estoy tratando de detectar los mensajes de entrada/salida del mouse CM_MOUSEENTER
y CM_MOUSELEAVE
pero no lo está captando. ¿Qué estoy haciendo mal aquí?Ratón Entrar ¿Dejar mensajes que no funcionan?
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;
Mi primer comentario es que no use puntos de interrupción para controlar tales cosas. La interacción de la interfaz de usuario siempre está en mal estado cuando se cambia al depurador. Use algo como Codesite para enviar un mensaje a otra ventana, y asegúrese de no cambiar el enfoque durante la monitorización. – mj2008