MFC多文档MDI_"打开文件"默认后缀名修改,根据需要添加

参考:http://blog.csdn.net/segen_jaa/article/details/8489917

应用背景:

我用的是MDI框架,需要调用同事给的dll,才能确定本程序解析何种格式的文件。如他给了dll1,dll2,dll3,dll4,后缀分别是.format1,.format2,.format3,.format4。以后还可能会有(dll5,format5),(dll6,format6)

因此在MDI加载文档模板之前就要获得全部后缀名,然后动态的传给MDI。

首先,需要修改打开文件的后缀名。需要重载CMultiDocTemplate,参考文章的后缀也是在主程序中写好的,不是我想要的,

很简单,在继承类中多加一个参数 char *suffix,

具体实现如下:

[cpp] view plain copy

  1. #pragma once
  2. #include "afxwin.h"
  3. class CMultiDocTemplateSuffixEx :   public CMultiDocTemplate  
  4. {  
  5.     CString m_strSuffix;  
  6. public:  
  7.     CMultiDocTemplateSuffixEx(char *suffix,UINT nIDResource, CRuntimeClass* pDocClass,  
  8.         CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass):\  
  9.         CMultiDocTemplate( nIDResource, pDocClass, pFrameClass, pViewClass )  
  10.     {  
  11.         m_strSuffix.Format("%s",suffix);  
  12.     }  
  13. virtual BOOL GetDocString(CString& rString, enum DocStringIndex index) const
  14.     {  
  15. if(index == CDocTemplate::filterExt)  
  16.         {  
  17.             rString = "."+m_strSuffix;  
  18.         }  
  19. else if( index == CDocTemplate::fileNewName || index == CDocTemplate::filterName )  
  20.         {  
  21.             rString = m_strSuffix+"(*."+m_strSuffix+")";        }  
  22. else
  23.         {  
  24.             __super::GetDocString(rString,index);  
  25.         }  
  26. return TRUE;  
  27.     };  
  28. }; 

使用:

[cpp] view plain copy

  1. CMultiDocTemplate *pDocTemplate0;  
  2. char *curSuffix[]={"format1","format2","format3"};  
  3. for(int i=0; i<3; i++)  
  4.     {  
  5.         pDocTemplate0 = new CMultiDocTemplateSuffixEx  
  6.             (curSuffix[i],IDR_MAINFRAME,  
  7.             RUNTIME_CLASS(CTestDoc),  
  8.             RUNTIME_CLASS(CChildFrm),  
  9.             RUNTIME_CLASS(CTestView));  
  10.         AddDocTemplate(pDocTemplate0);  
  11.     }  

posted on 2017-02-13 13:03 FongLuo 阅读(794) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2017年2月>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

导航

常用链接

留言簿

随笔分类(11)

随笔档案(79)

文章档案(1)

收藏夹(38)

学习网站

一般网站

最新随笔

搜索

积分与排名

最新评论

阅读排行榜