我做的是一个文档视图模式,然后我是自己做了一个基于对话框的类,不知道怎么调用文档的变量。请各位大哥帮帮忙!!!

解决方案 »

  1.   

    写一个GetDocument()函数;CDocxxx* GetDocument()
    {
    return xxxx;
    }
      

  2.   

    一般的做法:将文档的变量传给对话框,如:
    CMyDialog dlg;    //在文档中定义对话框
    dlg.One = m_One;  //m_One为文档的变量
    dlg.Two = m_Tow;
    ……
    if(dlg.DoModal() == IDOK)
    {
        //将对话框的变量传回文档
        m_One = dlg.One;
        ……
    }
      

  3.   

    同意 nlstone(天外流星)
    一般在文档类中构造对话框对象来进行文档类数据和对话框类数据的交换
      

  4.   

    各位大哥小弟还是不懂,能不能说的具体一点?
    我在自己间的对话框类中加了这样一个函数
    CViewDoc * left::getdocument()
    {   
    CViewDoc * m_pDocument;
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CViewDoc)));
    return (CViewDoc*)m_pDocument;
    }
    然后调用这个函数
    CViewDoc * pDoc=(CViewDoc*)getdocument();
    然后用pDoc->调用文档里的变量。
    编译是通过了,但运行出错???
      

  5.   

    由AfxGetApp()得到你程序的应用程序对象,他其中有一个m_pMainWnd的成员变量指向你程序的主框架窗体,由主框架窗口的GetActiveDocument( )函数就可以得到当前的活动文档了。
      

  6.   

    你出错的原因是,只是申请了一个文档指针,但没有将该文档指针指向具体的对象,ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CViewDoc)));时检测到该文档对象根本不存在,所以这是会报错,指出你引用不可用的地址。
      

  7.   

    在需要使用文档处,加入
    CMainFrame* pWnd=(CMainFrame*)(AfxGetApp()-〉m_pMainWnd );
    CViewDoc * m_pDocument=(CViewDoc *)(m_pMainWnd->GetActiveDocument( ));
    m_pDocument指向的就是文档对象。