用鼠标中键对mfc绘图开展放缩

用鼠标中键对mfc绘图进行放缩
怎么用鼠标的中键对基于单文档或者对话框的mfc所画的(用MoveTo和LineTo所画的)图像进行放大和缩小?有大神帮忙直接写一段代码,让我看一下,其中MoveTo和LineTo所画的曲线已经绘制出来了

------解决思路----------------------
WM_MOUSEWHELL消息,改变点的坐标,然后MoveTo/LineTo
------解决思路----------------------
1.响应消息
 BOOL CCoordinateView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
    // TODO: Add your message handler code here and/or call default
    m_dScale += 0.05 * zDelta/ 120;
    if(m_dScale <= 0.02)  
    {   
        m_dScale = 0.02;            
    }         
    if(m_dScale >= 4.0)  
    {
        m_dScale = 4.0; 
    }
    SetScrollSizes(MM_TEXT, CSize(nXW * m_dScale * dRatio,nYH * m_dScale * dRatio));
    Invalidate();
    return TRUE;/*CScrollView::OnMouseWheel(nFlags, zDelta, pt)*/;
}


2.OnPaint里修正坐标值 其中m_ScrolPt是滚动条坐标 视图从cscrollview派生的
m_pMemoryDC->MoveTo((m_PTArray.GetAt(0).x - m_ScrolPt.x) * m_dScale,
            (m_PTArray.GetAt(0).y - m_ScrolPt.y) * m_dScale);
               m_pMemoryDC->LineTo((m_PTArray.GetAt(i).x - m_ScrolPt.x) * m_dScale,
                (m_PTArray.GetAt(i).y - m_ScrolPt.y) * m_dScale);
       }

------解决思路----------------------
你光看代码有什么用,你得知道原理才能自己写出来啊,我推荐一个方法是把窗口上的内容保存到一个内存DC上,然后在中键消息当中用StrechBlt函数去拉伸或者压缩内存DC上的内容
------解决思路----------------------
引用:
1.响应消息
 BOOL CCoordinateView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
    // TODO: Add your message handler code here and/or call default
    m_dScale += 0.05 * zDelta/ 120;
    if(m_dScale <= 0.02)  
    {   
        m_dScale = 0.02;            
    }         
    if(m_dScale >= 4.0)  
    {
        m_dScale = 4.0; 
    }
    SetScrollSizes(MM_TEXT, CSize(nXW * m_dScale * dRatio,nYH * m_dScale * dRatio));
    Invalidate();
    return TRUE;/*CScrollView::OnMouseWheel(nFlags, zDelta, pt)*/;
}


2.OnPaint里修正坐标值 其中m_ScrolPt是滚动条坐标 视图从cscrollview派生的
m_pMemoryDC->MoveTo((m_PTArray.GetAt(0).x - m_ScrolPt.x) * m_dScale,
            (m_PTArray.GetAt(0).y - m_ScrolPt.y) * m_dScale);
               m_pMemoryDC->LineTo((m_PTArray.GetAt(i).x - m_ScrolPt.x) * m_dScale,
                (m_PTArray.GetAt(i).y - m_ScrolPt.y) * m_dScale);
       }


这种做法是没有什么问题的。