MFC绘图线条简单范例

void CChildView::OnLButtonDown(UINT nFlags, CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    m_OriginPosition = point;
    m_draw = TRUE;
    m_old = point;
    CWnd ::OnLButtonDown(nFlags, point);
}

void CChildView::OnLButtonUp(UINT nFlags, CPoint point) 
{
    /*
    //1.利用winapi全局函数
    HDC hdc;  // 设备上下文句柄 
    hdc = ::GetDC(m_hWnd);    
    MoveToEx(hdc, m_OriginPosition.x, m_OriginPosition.y, NULL);
    LineTo(hdc, point.x, point.y);
    ::ReleaseDC(m_hWnd, hdc); //释放dc
    */
    /*
    //2.利用mfc CDC类
    CDC *pDC= GetDC();
    pDC->MoveTo(m_OriginPosition);
    pDC->LineTo(point);
    ReleaseDC(pDC);
    */
    /*
    //3.CClientDC
    CClientDC dc(this);
    dc.MoveTo(m_OriginPosition);
    dc.LineTo(point);

    CClientDC dc(GetParent());
    dc.MoveTo(m_OriginPosition);
    dc.LineTo(point);*/
    /*
    //CWindowDC
    CWindowDC dc(this);
    dc.MoveTo(m_OriginPosition);
    dc.LineTo(point);
    CWindowDC dc(GetParent());
    dc.MoveTo(m_OriginPosition);
    dc.LineTo(point);
    CWindowDC dc(GetDesktopWindow());
    dc.MoveTo(m_OriginPosition);
    dc.LineTo(point);*/
/*
    CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
    CClientDC dc(this);
    CPen *pOldPen = dc.SelectObject(&pen);
    dc.MoveTo(m_OriginPosition);
    dc.LineTo(point);
    dc.SelectObject(pOldPen);    */
/*    CBrush brush(RGB(255, 0, 0));
    CWindowDC dc(this);
    dc.FillRect(CRect(m_OriginPosition, point), &brush);*/
/*    CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    CClientDC dc(this);
    CBrush *pOldPen = dc.SelectObject(pBrush);
    dc.Rectangle(CRect(m_OriginPosition, point));
    dc.SelectObject(pOldPen);*/
    m_draw = FALSE;
    CWnd ::OnLButtonUp(nFlags, point);
}

void CChildView::OnMouseMove(UINT nFlags, CPoint point) 
{
    CClientDC dc(this);
    
    if (m_draw)
    {
        /*
        dc.MoveTo(m_OriginPosition);
        dc.LineTo(point);
        m_OriginPosition = point;*/
        dc.MoveTo(m_OriginPosition);
        dc.LineTo(m_old);
        dc.MoveTo(m_OriginPosition);
        dc.LineTo(point);
        m_old = point;


    }
    CWnd ::OnMouseMove(nFlags, point);
}
posted @ 2012-09-22 17:05  xxx1  阅读(1115)  评论(0)    收藏  举报