마우스 이벤트를 추적하는 방법은 크게 두가지방법이 있다.
1. SetCapture ~ ReleaseCapture
2. _TrackMouseEvent
마우스 이벤트를 추적하여 메세지를 받는다는점에서 비슷하지만 엄연히 사용용도가 다르다.
1. SetCapture ~ ReleaseCapture
SetCapture를 호출하는 순간 마우스를 캡쳐하여 윈도우 영역을 벗어나더라도 계속해서 마우스의 메세지를 수신할수 있도록한다. 그리고 더이상 이러한 기능이 필요가 없을때 ReleaseCapture를 이용하여 마우스 이벤트의 추적을 중단한다.
2. _TrackMouseEvent
_TrackMouseEvent함수는 SetCapture함수처럼 마우스 이벤트를 추적할 수 있도록해준다.SetCapture함수는 응용프로그램 자신이 직접 마우스를 점유하고 계속 마우스 메세지를 수신하여 경계르 벗어났는지 검사한다. 하지만 _TrackMouseEvent함수는 운영체제에 자신의 윈도우를 등록하여 마우스가 자신의 영역을 벗어나면 메세지(WM_MOUSELEAVE)를 수신하여 경계가 벗어났음을 판단한다.
_TrackMouseEvent함수는 TRACKMOUSEEVENT구조체의 주소를 인자로 받는다
WORD cbSize //구조체의 크기
DWORD dwFlags //어떤이벤트를 추적할 것인지 명시
HWND hwndTrack //마우스 이벤트를 추적할 윈도우 핸들
DWORD dwHoverTime //THE_HOVER플레그를 설정했을때 타임아웃 값이 된다
dwFlags에 들어가는 이벤트
TME_CANCEL : 마우스의 이벤트의 추적을 취소
TME_HOVER : WM_MOUSEHOVER메세지를 수신한다.
TME_LEAVE : WM_MOUSELEAVE메세지를 수신한다.
TME_NONCLIENT : WM_NCMOUSEHOVER와 WM_NCMOUSELEAVE메세지를 수신한다.
TME_QUERY : 현재 설정정된 추적 정보를 알아본다
'Developer > MFC' 카테고리의 다른 글
MFC Class Hierarchy Chart (0) | 2012.11.01 |
---|