看《深入浅出MFC》的又一个疑惑
树上p347说,CDocManger拥有一个指针列表,用来维护一系列的Document Template,
Question:既然有多份文档模板的存在,如何确定是选择哪个文档模板类来动态创建Document/View/Frame对象?
[解决办法]
你可以自己调用指定模板的OpenDocumentFile方法。OnFileNew中也会处理,如果发现有多个模板,会让用户选择,MFC中代码如下:
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已经实现了。