问题
文档与视图绑定后,在视图中如何获取文档指针?
新建MFC多文档工程(命名为Test),自动生成了一个CTestView类,其中就有包含成员函数GetDocument()。而当我们手动添加一个新的视图类,比如CNaviMarkView,在这个CNaviView类里就没有这个GetDocument(),因此我们必须手动添加。
解决方法:
1、NaviMarkView.h头文件。
#include "NaviMarkDoc.h"
class CNaviMarkView : public CFormView
{
DECLARE_DYNCREATE(CNaviMarkView)
public:
//文档指针
CNaviMarkDoc *m_pDoc;
};
#ifndef _DEBUG
inline CNaviMarkDoc * CNaviMarkView::GetDocument()
{
return (CNaviMarkDoc*)m_pDocument;
}
#endif
2、NaviMarkView.cpp源文件。
#ifdef _DEBUG
CNaviMarkDoc * CNaviMarkView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CNaviMarkDoc)));
return (CNaviMarkDoc*)m_pDocument;
}
#endif
#endif //_DEBUG
3、获取指针。
void CNaviMarkView::OnInitialUpdate()
{
m_pDoc = GetDocument();
}