下面是源程序:
void CCMyDrawView::OnDraw(CDC* pDC)
{
CCMyDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
    CMyDrawLine dlg;
    CPoint P1, P2;
 
   Width=dlg.m_pWidth;
  CPen Pen;
  Pen.CreatePen(PS_SOLID,Width,RGB(0,0,255));
  CPen* pOldPen=pDC->SelectObject(&Pen);
  //斜二侧平行投影
  P1.x=dlg.m_p1x+0.5*dlg.m_p1z*cos(63.4);
   P1.y=dlg.m_p1y+0.5*dlg.m_p1z*sin(63.4);
    // P1.z=(int)dlg.m_p1z;
   P2.x=dlg.m_p2x+0.5*dlg.m_p2z*cos(63.4);
   P2.y=dlg.m_p2y+0.5*dlg.m_p2z*cos(63.4);
   // P2.z=(int)dlg.m_p2z;
  
       pDC->MoveTo(P1);
       pDC->LineTo(P2);
  P1=P2;//移动到下一个位置
  pDC->SelectObject(pOldPen);}void CCMyDrawView::OnInputPoint() 
{
// TODO: Add your command handler code here
       CMyDrawLine dlg;
if(dlg.DoModal()==IDOK)
{
        //OnDraw(CDC* pDC);???????????????????????
}
}

解决方案 »

  1.   

    发送个刷新消息就行了,很少自己调用OnDraw的吧,一般都是FrameWord自己调用的
    Invalidate(TRUE)
    UpdateWindow() ;
      

  2.   

    楼上的就可以,如果真的需要调用
    void CCMyDrawView::OnInputPoint() 
    {
                       CMyDrawLine dlg;
    if(dlg.DoModal()==IDOK)
    {
            OnDraw(GetDC());
    }
    }
      

  3.   

    Invalidate(TRUE);
    这个就够了
    正如楼上说的
    一般MFC帮你干完了,你不需要自己调用。
    一般调用的情况出现在自己重载的ONDRAW;
      

  4.   

    重载的ONDRAW也能实现ONDRAW的功能吗?
      

  5.   

    那当然,窗口一重画你的东西就化为乌有了,把你的代码放到OnDraw()里试试。
      

  6.   

    放到OnDraw()里面可以,但是不能使用自己定义的消息映射函数了