WM_MOUSELEAVE a UpdateLayeredWindow

0

Witajcie!

Zgodnie z tym tutkiem: Przezroczysta forma stworzyłem sobie ładne półprzezroczyste okno.

Jednakże, potrzebowałbym obsługę komunikatu WM_MOUSELEAVE z formy layered.

Problem tkwi w tym, że do tego okna w ogóle nie dociera ten komunikat.

 
case uMsg of
  WM_MOUSELEAVE: RobCos(); 

Czy zna ktoś jakieś sprytne obejście tego problemu? Bo nie chciałbym robić tego na sztywno (pobieranie współrzędnych kursora myszy i sprawdzanie położenia formy)

Pozdrawiam

1

W dokumentacji stoi, że aby otrzymać WM_MOUSELEAVE trzeba przedtem wywołać TrackMouseEvent.

0

Możesz użyć CM_MOUSELEAVE

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CMMouseEnter(var Msg: TMessage);
begin
  //tu cos mozesz robic
end;

procedure TForm1.CMMouseLeave(var Msg: TMessage);
begin
  //tu cos mozesz robic
end;
0

Dzięki wielkie Azarien, o to chodziło :)
Co do CM_MOUSELEAVE to już to wcześniej próbowałem i też nie działało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1