我在单文档视图结构的主窗口里弹出一个子对话框,在该对话框里用EDIT控件来读取用户输入的数据(该数据用来更新主视图里面的数据显示),在我点击“OK”关闭该对话框后,如何更新主视图???
急啊~

解决方案 »

  1.   

    重载OnOK(),函数内部添加调用:((CMyView*)(AfxGetApp()->GetActiveView()))->Invalidate();
      

  2.   

    谢谢mtsh,但是似乎有点问题:
    我重载了OnOK(),如下
    void InputDialog::OnOK() 
    {
    // TODO: Add extra validation here

    CDialog::OnOK();
    //CChildView是我要更新的的视图类
    ((CChildView*)(AfxGetApp()->GetActiveView()))->Invalidate();}但是编译报2个错~~
    nputDialog.cpp
    ..\inputdialog.cpp(87) : error C2039: 'GetActiveView' : is not a member of 'CWinApp'
            f:\microsoft visual studio\vc98\mfc\include\afxwin.h(4031) : see declaration of 'CWinApp'
    ..\inputdialog.cpp(87) : error C2227: left of '->Invalidate' must point to class/struct/union
    Error executing cl.exe.
      

  3.   

    if(dlg.DoModal()==IDOK)
      Invalidate();
      

  4.   

    用qrlvls(忍者神牛) 的方法是最简单的当然 你也可以:
    ((CChildView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView))->Invalidate();(注意 #include "MainFrm.h")
      

  5.   

    sorry! try again!
    ((CChildView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView()))->Invalidate();
      

  6.   

    1。if(dlg.DoModal()==IDOK)
      Invalidate();
    2。((CChildView*)((CMainFrame*)AfxGetMainWnd())->GetActiveView()))->Invalidate();
      

  7.   

    用上面几种方法都可以编译通过
    但是当我点击主窗口中弹出的对话框的“OK”时,VC++提示程序0XXXXXX20不可“read”
    为什么呢?
      

  8.   

    我要更新的是主窗口的视图,不是对话框啊
    1。if(dlg.DoModal()==IDOK)
      Invalidate();
    上面的代码是更新对话框的吧?
    还是应该放在其它函数里??
      

  9.   

    把以下代码放在主窗口的视图的弹出对话框的消息处理函数里即可!
    if(dlg.DoModal()==IDOK)
      Invalidate();