不用那么复杂。
对话框弹出时,这样写:if(dlg.DoModal() == IDOK)
{
   //将在对话框中取得值传给View的相应变量
}

解决方案 »

  1.   

    to sam1111: 您能说的清楚一些么
    to lingwetao: 不好用啊
      

  2.   

    如果你把画图函数写在文档类,就要用UpdateAllViews.
    如果写在对话框或视图类,就直接Invalidate
    如果写在别的一般的类上,难道你不要构造一个DC?
      

  3.   

            CyourApp *pWinApp;
            pWinApp=(CyourApp* )AfxGetApp();
            CyourMainWnd *pMainWnd=pWinApp->GetMainWnd()
           CyourView *pView = (CyourView *) pMainWnd->GetActiveView();
      

  4.   

    你应该在对话框中搜集数据,在视图中显示和更新数据。
    界面的更新应该在DoModal调用之后,这样就不用考虑怎么得到视图了。
      

  5.   

    void CIuput::OnOK() 
    {
    // TODO: Add extra validation here
       UpdateData(false);
    CMainFrame *pFrame = 
                 (CMainFrame*)AfxGetApp()->m_pMainWnd;

    CDddView *pView = (CDddView *) pFrame->GetActiveView();
        CDC* pDC=pView->GetDC();
        pDC->MoveTo(m_xs,m_ys);//这是画的直线m_xs等值都是自己输入的
        pDC->LineTo(m_xe,m_ye);CDialog::OnOK();}编译通过了,可是输入完数值之后,按ok,图形没有变化
    另,这个对话框是点击有键产生的
      

  6.   

    就是: sam1111(化神奇为腐朽)说得对,应该将显示与数据分开。所以在你的View类中判断弹出的对话返回值比较合理。
    if(dlg.DoModal()==IDOK)
    {
         //取得半径值
         Invalidate();//然后在OnPaint中重画即可
    }
      

  7.   

    同意kingzai的话!!!
    你要使用Microsoft 视图文档结构才好的。