MFC 多文档模板切换
来源:互联网 发布:富坚义博 知乎 编辑:程序博客网 时间:2024/06/10 00:01
你的app对象中给你自己的每个模板添加一个模板变量,保存你的所有模板。 然后需要的时候直接使用模板变量来新建文件,不使用系统默认的 ID_FILE_NEW(把它从菜单删掉) // MyApp.h class CMyAPP...{ CMultiDocTemplate* m_pTemplateAaa, m_pTemplateBbb; ...... } // MyApp.cpp m_pTemplateAaa = new CMultiDocTemplate( IDR_AAATYPE, RUNTIME_CLASS(CAaaDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CAaaView)); AddDocTemplate(m_pTemplateAaa); m_pTemplateBbb = new CMultiDocTemplate( IDI_MYFORM, RUNTIME_CLASS(CBbbDoc), RUNTIME_CLASS(CFormChild), // custom MDI child frame RUNTIME_CLASS(CMyForm)); AddDocTemplate(m_pTemplateBbb ); 然后在菜单添加命令 ID_FILE_NEW_AAA、ID_FILE_NEW_BBB 用ClassWizard添加对应的处理程序OnFileNewAaa、OnFileNewBbb void CMyApp::OnFileNewAaa(){ ASSERT_KINDOF(CMultiDocTemplate, m_pTemplateAaa); m_pTemplateAaa-> OpenDocumentFile(NULL); } void CMyApp::OnFileNewBbb(){ ASSERT_KINDOF(CMultiDocTemplate, m_pTemplateBbb); m_pTemplateAaa-> OpenDocumentFile(NULL); } 以上代码在Visual C++6.0 sp6中通过。
=======================================================
多模板切换,打开默认模板,可考虑重载 App::OnFileNew() 函数,添加如下代码即可:
POSITION pos = m_pDocManager->GetFirstDocTemplatPosition();
CDocTemplate* pDocTemplate = m_pDocManager->GetNextDocTemplate(pos);
pDoctemplate->openDocumentFile(NULL);