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毫秒