65.9K
CodeProject 正在变化。 阅读更多。
Home

在MFC MDI应用程序中打开/保存多种类型的文档

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (11投票s)

2004 年 11 月 24 日

CPOL

2分钟阅读

viewsIcon

88838

downloadIcon

1972

一个简单的 Visual C++ 6.0 多文档 (MDI) 项目,允许打开/保存多种类型的文档。

引言

这是一个简单的 visual C++ 6.0 多文档 (MDI) 项目,允许打开/保存多种类型的文档。 通常,当您启动 MDI 项目时,您只能将一种文件类型(即扩展名)与您的项目关联。 如果您希望能够打开/保存多种类型,您需要稍微更改您的程序(图 1)。 MyFirstProject 是一个简单的空项目,可以处理多种类型。

Sample Image - MDI_MultipleExtension.jpg

你需要做什么

所有更改的代码都已标记(如 //Babak),因此您可以轻松找到它们,并在您自己的项目中准确地实现它们。 以下是您需要执行的操作的摘要

  • CDocManager 派生一个类(这里命名为 CMultDocManager
    • 覆盖 DoPromptFileName
    • 覆盖 OnFileNew
    • 您需要从 mfc/src/ docmgr.cpp 复制 _AfxAppendFilterSuffix(稍作更改)(不良的编程风格)
  • CMultiDocTemplate 派生一个类(这里命名为 CMultMultiDocTemplate
    (这样您的程序才能识别由分号分隔的多种文件类型
    • 覆盖 GetDocString
    • 覆盖 MatchDocType

(对于最后两个步骤,只需将文件 MultDocManager.h/cpp 和 MultMultiDocTemplate.h/cpp 添加到您的项目)

  • 将您的主应用程序类(从 CWinApp 派生的类)的 m_pDocManager 设置为 new CmultDocManager
  • 打开项目的 .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 上
© . All rights reserved.