본문 바로가기

Library/.NET Framework with C#

MouseEnter, MouseLeave, MouseHover

Form에서, MouseEventArgs를 인자로 가지는, 기본적인 마우스 관련 이벤트는 MouseDown, MouseUp, MouseMove, MouseWheel이다. MFC에서, 마우스 커서가 언제 윈도우 영역을 벗어나는지 확인하기 위해 WM_MOUSELEAVE 메세지를 처리해봤던 사람이라면, Form에서도 이것과 비슷하게 Enter, Leave 처리가 이루어진다는 것을 알 수 있을 것이다.

즉, MFC에서 WM_MOUSELEAVE 메세지를 잡기 위해서는 TrackMouseEvent라는 구조체를 정의하고 여기에 이벤트를 받도록 정의해야 하는데, 그래서 기본적으로 WM_MOUSELEAVE 메세지는 CWnd 클래스의 속성에 나타나지 않는다.

마찬가지로, MouseLeave 이벤트는 MouseEventArgs가 아닌, EventArgs를 인자로 받으며, MouseEventArgs를 인자로 받는 이벤트들과 구분된다. EventArgs를 인자로 받는 마우스 이벤트는, MouseEnter, MouseLeave, MouseHover 이벤트가 있다. 그리고, 이 이벤트를 처리할 핸들러 역시, MouseEventHandler가 아닌 EventHandler delegate를 사용하여 등록하게 된다.