一种限制MFC MDI架构中某类型文档个数的方法

稍微复杂一点的MFC程序,一般采用MDI架构来实现。有时会有这种需求,比如对于某一个功能,在程序中仅需要一个文档对象就够了(一个文档对应一个相应的MDI子框架对象)。最近在做一个工具的时候就遇到了这种需求。下面是自己想的一种方法:

void CtestmdiApp::OnFileNew()
{
    POSITION pos = m_pDocManager->GetFirstDocTemplatePosition();

    while (pos != NULL)
    {
        CDocTemplate* pDocTemp = m_pDocManager->GetNextDocTemplate(pos);
        POSITION docPos = pDocTemp->GetFirstDocPosition();

        while(docPos != NULL)
        {
            CDocument* pDoc = pDocTemp->GetNextDoc(docPos);
            if (pDoc->IsKindOf(RUNTIME_CLASS(CtestmdiDoc)))
            {
                return;
            }
            break;
        }

    }
    CWinAppEx::OnFileNew();
}

 即在创建文档的时候,截取创建消息,并从docManager中取得文档模板信息,并进而枚举出所有的已创建的文档对象进行判断,当找到该类型文档对象的时候,就返回;否则,即没找到的情况下,创建一个该类型的文档对象。

posted @ 2010-12-05 15:54  I'm 农民工  阅读(478)  评论(0编辑  收藏  举报