一种限制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中取得文档模板信息,并进而枚举出所有的已创建的文档对象进行判断,当找到该类型文档对象的时候,就返回;否则,即没找到的情况下,创建一个该类型的文档对象。

转载于:https://www.cnblogs.com/liqilei/archive/2010/12/05/1896934.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值