PersonalCorpus 版 (精华区)
class CMyDoc: public CDocument
{
.............
public:
static CMyDoc* GetDoc();
.............
};
对于单文档的实现
CMyDoc* CMyDoc::GetDoc()
{
CFrameWnd* pFrame = (CFrameWnd*)(AfxGetApp()->m_pMainWnd);
return (CMyDoc*)pFrame->GetActiveDocument();
}
对于多文档的实现
CMyDoc* CMyDoc::GetDoc()
{
CMDIChildWnd* pChild = ((CMDIChildFrameWnd*)(AfxGetApp()->m_pMainWnd))->
MDIGetActive();
if(!pChild)
return NULL;
CDocument* pDoc = pChild->GetActiveDocument();
if(!pDoc)
return NULL;
(if!pDoc->IsKindOf(RUNTIME_CLASS(CMyDoc)))
return NULL;
return (CMyDoc*)pDoc;
}
对单文档,我通常采用使用一种看起来比较偷懒的方法:
#include "MyDoc.h"
extern CMyDoc* pDoc;
在MyDoc.cpp中定义:
CMyDoc* pDoc;
在构造函数中:
CMyDoc::CMyDoc()
{
.............
pDoc = this;
.............
}
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.068毫秒