Visual C++ 7.1Visual C++ 8.0Visual Studio 6Visual C++ 7.0Windows 2003Windows 2000Visual C++ 6.0Windows XPMFC中级开发Visual StudioWindowsC++.NET
在MFC MDI应用程序中打开/保存多种类型的文档






4.88/5 (11投票s)
一个简单的 Visual C++ 6.0 多文档 (MDI) 项目,允许打开/保存多种类型的文档。
引言
这是一个简单的 visual C++ 6.0 多文档 (MDI) 项目,允许打开/保存多种类型的文档。 通常,当您启动 MDI 项目时,您只能将一种文件类型(即扩展名)与您的项目关联。 如果您希望能够打开/保存多种类型,您需要稍微更改您的程序(图 1)。 MyFirstProject 是一个简单的空项目,可以处理多种类型。
你需要做什么
所有更改的代码都已标记(如 //Babak),因此您可以轻松找到它们,并在您自己的项目中准确地实现它们。 以下是您需要执行的操作的摘要
- 从
CDocManager
派生一个类(这里命名为CMultDocManager
)
- 覆盖
DoPromptFileName
- 覆盖
OnFileNew
- 您需要从 mfc/src/ docmgr.cpp 复制
_AfxAppendFilterSuffix
(稍作更改)(不良的编程风格)
- 覆盖
- 从
CMultiDocTemplate
派生一个类(这里命名为CMultMultiDocTemplate
)
(这样您的程序才能识别由分号分隔的多种文件类型
- 覆盖
GetDocString
- 覆盖
MatchDocType
- 覆盖
(对于最后两个步骤,只需将文件 MultDocManager.h/cpp 和 MultMultiDocTemplate.h/cpp 添加到您的项目)
- 将您的主应用程序类(从
CWinApp
派生的类)的m_pDocManager
设置为 newCmultDocManager
- 打开项目的 .rc 文件并复制 IDR_...TYPE(对于各种文件类型)
- 遍历所有项目文件,每次使用 IDR_...TYPE 时,也使用您制作的新文件
- 覆盖您的主文档类(从
CDocument
派生的类)中的DoSave
参考文献
- “MFC 文档/视图文档和增强”作者:Roger Allen,在 CodeProject.com 上
- “如何支持每个 MFC 文档类型两种文件扩展名”Micorosft 支持文档文章 ID 141921
- “DocMgrEx.exe Assoc 多个文件扩展名 w/2 Doc Tyle”Micorosft 支持文档文章 ID 198538
- “在文件打开对话框中选择多个文件”作者:Kaus Gutter,在 CodeGuru.com 上
- “一次打开几种类型的多个文档”作者:Ernesto Perales Soto,在 CodeProject.com 上