一般基于视图/文档的程序都是把自己的数据在文档类里面保存,文档类可以方便地实现打印功能和文件的串行化,在视图里面对文档类里面的数据进行操作和显示。在视图类里面直接有一个GetDocument()方法,所以取得文档类的指针很方便。
例子很容易,比如在文档类里面定义一个Public类型的变量CString m_str; 然后在视图里面就可以这样来访问该变量:
CxxDoc *pDoc = GetDocument();
AfxMessageBox(pDoc->m_str);
GetDocument()方法只能在CView及其派生类中调用,若想在其他类中调用,可声明引用主框架指针或者自定义一个GetDocument()函数。
例如:
//取得框架中CMyTreeView部分的指针
CMainFrame *pMain = (CMainFrame *)AfxGetMainWnd();
CMyTreeView *pMyTree = (CMyTreeView*)pMain->m_wndSplitter1.GetPane(0,0);
//调用CMyTreeView的GetDocument函数初始化文档操作指针
CMyDoc *pDoc = (CMyDoc*)((*pMyTree).GetDocument());