读书人

看《深入浅出MFC》的又一个疑惑,该怎么

发布时间: 2012-03-18 13:55:38 作者: rapoo

看《深入浅出MFC》的又一个疑惑
树上p347说,CDocManger拥有一个指针列表,用来维护一系列的Document Template,
Question:既然有多份文档模板的存在,如何确定是选择哪个文档模板类来动态创—ocument/View/Frame对象?

[解决办法]
你可以自己调用指定模板的OpenDocumentFile方法。OnFileNew中也会处理,如果发现有多个模板,会让用户选择,MFC中代码如下:

C/C++ code
void CDocManager::OnFileNew(){    if (m_templateList.IsEmpty())    {        TRACE(traceAppMsg, 0, "Error: no document templates registered with CWinApp.\n");        AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);        return;    }    CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetHead();    if (m_templateList.GetCount() > 1)    {        // more than one document template to choose from        // bring up dialog prompting user        CNewTypeDlg dlg(&m_templateList);        INT_PTR nID = dlg.DoModal();        if (nID == IDOK)            pTemplate = dlg.m_pSelectedTemplate;        else            return;     // none - cancel operation    }    ASSERT(pTemplate != NULL);    ASSERT_KINDOF(CDocTemplate, pTemplate);    pTemplate->OpenDocumentFile(NULL);        // if returns NULL, the user has already been alerted}
[解决办法]
http://blog.csdn.net/visualeleven/article/details/7010821
[解决办法]
不熟悉MFC,试解释如下:
这里的文档模板,我理解应该是类似工厂类的东东,或者说是管理类,也就是一个
文档模板对应一个Document、多个View.文档模板仅负责创建和管理,由于文档是多份,
所以需要有选择,如1楼,2楼所说,当文档是多份时,新建会弹出一个选择框,这个功能
MFC已经实现了。

读书人网 >VC/MFC

热点推荐