본문 바로가기

Windows/MFC

MouseEvent

[code]
OnMouseOver
OnMouseOut
OnMousePress
OnMouseDown
OnMouseUp

등을 알수 있다.

m_bMouseOver : bool 형식에 멤버변수

* 중요 포인트 OnLButtonUp 에 ReleaseCapture(), OnMouseMove 에 SetCapture()
[/code]

void CButtonEx::OnLButtonDown(UINT nFlags, CPoint point)
{
    m_bMouseOver = true;
    DrawButton(ACTIVE_BUTTON);    
    Invalidate();
    
    CButton::OnLButtonDown(nFlags, point);
}

void CButtonEx::OnLButtonUp(UINT nFlags, CPoint point)
{
    ReleaseCapture();
    m_bMouseOver = false;
    DrawButton(NORMAL_BUTTON);
    Invalidate();

    CButton::OnLButtonUp(nFlags, point);
}

void CButtonEx::OnMouseMove(UINT nFlags, CPoint point)
{
    // 마우스가 버튼 위치를 떠났을 때
    if (rect.PtInRect(point) == false)
    {
        DrawButton(NORMAL_BUTTON);
        Invalidate();
        
        if (!m_bMouseOver)
        {
            ReleaseCapture();
        }
    }
    else
    {
        if (m_bMouseOver)
        {
            // 마우스는 클릭한 상태에서 버튼 위치일 경우
            DrawButton(ACTIVE_BUTTON);
            Invalidate();            
        }
        else
        {
            // 마우스는 클릭하지 않은 상태 에서의 버튼 위치 일 경우    
            DrawButton(OVER_BUTTON);
            Invalidate();
        }

        SetCapture();
    }

    CButton::OnMouseMove(nFlags, point);
}

'Windows > MFC' 카테고리의 다른 글

XML using MFC  (0) 2013.10.02
Exception class  (0) 2013.10.02
GDI+ Enumerations (MSDN Link)  (0) 2013.10.02
GDI+ Graphics Methods (MSDN Link)  (0) 2013.10.02
GDI+ MSDN Link  (0) 2013.10.02