WEB开发网
开发学院软件开发VC 深入浅出MFC“文档/视图”架构(2)――文档模板 阅读

深入浅出MFC“文档/视图”架构(2)――文档模板

 2009-02-11 20:00:37 来源:WEB开发网   
核心提示: 文档模板挂接了后面要介绍的文档、视图和框架窗口,使得它们得以互相关联,深入浅出MFC“文档/视图”架构(2)――文档模板(5),通过文档模板,程序确定了创建或打开一个文档时,以什么样的视图和框架窗口来显示,文档模板依靠保存相互对应的文档、视图和框架窗口的CRuntimeClass对象指针来

文档模板挂接了后面要介绍的文档、视图和框架窗口,使得它们得以互相关联。通过文档模板,程序确定了创建或打开一个文档时,以什么样的视图和框架窗口来显示。文档模板依靠保存相互对应的文档、视图和框架窗口的CRuntimeClass对象指针来实现上述挂接,这就是文档模板类中的成员变量m_pDocClass、m_pFrameClass、m_pViewClass的由来。实际上,对m_pDocClass、m_pFrameClass、m_pViewClass的赋值在CDocTemplate类的构造函数中实施:

CDocTemplate::CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass)
{
    ASSERT_VALID_IDR(nIDResource);
    ASSERT(pDocClass == NULL ||
       pDocClass->IsDerivedFrom(RUNTIME_CLASS(CDocument)));
    ASSERT(pFrameClass == NULL ||
       pFrameClass->IsDerivedFrom(RUNTIME_CLASS(CFrameWnd)));
    ASSERT(pViewClass == NULL ||
       pViewClass->IsDerivedFrom(RUNTIME_CLASS(CView)));
  
    m_nIDResource = nIDResource;
    m_nIDServerResource = NULL;
    m_nIDEmbeddingResource = NULL;
    m_nIDContainerResource = NULL;
  
    m_pDocClass = pDocClass;
    m_pFrameClass = pFrameClass;
    m_pViewClass = pViewClass;
    m_pOleFrameClass = NULL;
    m_pOleViewClass = NULL;
  
    m_pAttachedFactory = NULL;
    m_hMenuInPlace = NULL;
    m_hAccelInPlace = NULL;
    m_hMenuEmbedding = NULL;
    m_hAccelEmbedding = NULL;
    m_hMenuInPlaceServer = NULL;
    m_hAccelInPlaceServer = NULL;
  
    // add to pStaticList if constructed as static instead of on heap
    if (CDocManager::bStaticInit)
    {
       m_bAutoDelete = FALSE;
       if (CDocManager::pStaticList == NULL)
           CDocManager::pStaticList = new CPtrList;
       if (CDocManager::pStaticDocManager == NULL)
           CDocManager::pStaticDocManager = new CDocManager;
       CDocManager::pStaticList->AddTail(this);
    }
    else
    {
       m_bAutoDelete = TRUE;  // usually allocated on the heap
       LoadTemplate();
    }
}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:深入浅出 MFC 文档

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接