본문 바로가기

Visual C++/OnMouseLeave, MFC

OnMouseLeave example in MFC

// MyPopupWnd message handlers


BOOL m_bMouseTracking = FALSE;

void MyPopupWnd::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

if (!m_bMouseTracking)

{

             TRACKMOUSEEVENT tme;

             tme.cbSize = sizeof(TRACKMOUSEEVENT);

             tme.dwFlags = TME_LEAVE;

             tme.hwndTrack = this->m_hWnd;


//마우스나감 추적개시,마우스가 클라이언트영역을 벗어나면 WM_MOUSELEAVE 메시지를 발생시킴

//그 결과 OnMouseLeave()함수가 호출딤

            if (::_TrackMouseEvent(&tme))

    {

               m_bMouseTracking = TRUE;

            }

    }

 

CFrameWnd::OnMouseMove(nFlags, point);

}



void MyPopupWnd::OnMouseLeave()

{

// TODO: Add your message handler code here and/or call default

m_bMouseTracking = FALSE;

POINT mousePos;

GetCursorPos(&mousePos);

CRect clientRect;

GetClientRect(&clientRect);

if(mousePos.x >= clientRect.right)

{

AfxMessageBox(_T("마우스가 우측으로 나가요"));

}


CFrameWnd::OnMouseLeave();

}