为什么我在FormView里画的图拖动窗口图形就没有了?????如果在OnPaint()里话就不能响应消息了~~~!!!!!!!
void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
{
RECT rect; 
GetDlgItem(IDC_BITMAP)->GetClientRect(&rect);
// TODO: Add your message handler code here
CDC* pDC =GetDlgItem(IDC_BITMAP)->GetDC();
DrawCoordinate(pDC);//画坐标轴
pDC->SetTextColor(RGB(58,110,165));
pDC->TextOut(10, 0,c_Max);
pDC->TextOut(360, 215,m_Max);
for(i=0; i<m_ControlPoints.GetSize(); i++)
DrawsCale(m_ControlPoints[i], RGB(58,110,165),nItem+i, pDC);//画刻度
// 创建画笔对象
CPen* pPen = new CPen;
// *色画笔
pPen->CreatePen(PS_SOLID,1,RGB(58,110,165));//兰色
// 选中当前*色画笔,并保存以前的画笔
CGdiObject* pOldPen = pDC->SelectObject(pPen);
Drawcurve(pDC->m_hDC);
ReleaseDC(pDC);
}

解决方案 »

  1.   

    把你画图的函数在OnDraw里面写!!
      

  2.   

    在onDraw()函数里面写上你的函数OnDrawcurve()
      

  3.   

    在onDraw()函数里面写上你的函数OnDrawcurve()~~~!??????
    怎么写????????
      

  4.   

    可以这么干:
    首先在你的View里面加一个成员变量,比如:BOOL m_DrawFlag;
    然后:
    void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
    {
          m_DrawFlag = TREU;
    }然后在OnDraw()里面画曲线,具体是:
    void CTestView3::OnDraw(CDC *pDC)
    {
        if(m_DrawFlag)
        {
             RECT rect; 
    GetDlgItem(IDC_BITMAP)->GetClientRect(&rect);
    // TODO: Add your message handler code here
    CDC* pDC1 =GetDlgItem(IDC_BITMAP)->GetDC();
    DrawCoordinate(pDC1);//画坐标轴
    pDC1->SetTextColor(RGB(58,110,165));
    pDC1->TextOut(10, 0,c_Max);
    pDC1->TextOut(360, 215,m_Max);
    for(i=0; i<m_ControlPoints.GetSize(); i++)
    DrawsCale(m_ControlPoints[i], RGB(58,110,165),nItem+i, pDC1);//画刻度
    // 创建画笔对象
    CPen* pPen = new CPen;
    // *色画笔
    pPen->CreatePen(PS_SOLID,1,RGB(58,110,165));//兰色
    // 选中当前*色画笔,并保存以前的画笔
    CGdiObject* pOldPen = pDC1->SelectObject(pPen);
    Drawcurve(pDC1->m_hDC);
    ReleaseDC(pDC1);     }
    }
      

  5.   

    楼 上的,不行啊`~!!!!
    按你的方法在OnDraw()里画,点按钮没有画啊~~~~!!!!!
    我是了一下在OnPaint()里画,反应很慢~~~!!!!!!!!
    要拖动窗口才会画~~~!!!!!!也就是如果在OnPaint()里画的话,点按钮根本没有响应WM_PAINT的消息~~!!!!
      

  6.   

    楼 上的,不行啊`~!!!!
    按你的方法在OnDraw()里画,点按钮没有画啊~~~~!!!!!
    我是了一下在OnPaint()里画,反应很慢~~~!!!!!!!!
    要拖动窗口才会画~~~!!!!!!也就是如果在OnPaint()里画的话,点按钮根本没有响应WM_PAINT的消息~~!!!!
    /////
    在你的
    void CTestView3::OnDrawcurve() //一个响应按钮的画图函数
    {
          m_DrawFlag = TREU;/////添加此行代码
      Invalidate(TRUE);////或者InvalidateRect()
    }
      

  7.   

    问题解决了~~!!!!!
    View里面加一个成员变量,比如:BOOL m_DrawFlag=FALSE;
    在OnPaint()里画,该写了OnDrawcurve()
    {
    m_DrawFlag = TREU;
    SendMessage(WM_PAINT);
    }