WM_MOUSELEAVE a UpdateLayeredWindow

WM_MOUSELEAVE a UpdateLayeredWindow
SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
0

Witajcie!

Zgodnie z tym tutkiem: http://4programmers.net/Delphi/Artykuły/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.

Kopiuj
 
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

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 16 godzin
1

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

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
0

Możesz użyć CM_MOUSELEAVE

Kopiuj
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;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
SZ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 6 lat
  • Postów:107
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.

edytowany 1x, ostatnio: Szymonss
KA
Nie wiem czemu, powinno działać ale jak problem rozwiązany to nie wnikam.
SZ
dla zwykłej formy działa, ale dla okna potraktowanego UpdateLayeredWindow() komunikat WM_MOUSELEAVE jak i CM_MOUSELEAVE nie dochodzi. Wywołanie TrackMouseEvent rozwiązuje problem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.