Click here to Skip to main content
Click here to Skip to main content

Opening / Saving multiple types of documents in MFC MDI applications

By , 24 Nov 2004
 

Introduction

This is a simple visual C++ 6.0 multiple document (MDI) project that allows opening / saving multiple types of documents. Normally, when you start an MDI project, you are allowed to associate one file type (i.e. extension) with your project. If you want to be able to open / save more that one type, you need to change your program a bit (Figure 1). MyFirstProject is a simple empty project that handles multiple types.

Sample Image - MDI_MultipleExtension.jpg

What you need to do

All the altered codes are marked (as //Babak) so you can find them easily and just implement them exactly in your own project. Here is a summary of what you need to do:

  • Derive a class from CDocManager (here named CMultDocManager)
    • Override DoPromptFileName
    • Override OnFileNew
    • You will need to copy _AfxAppendFilterSuffix (with a slight change) from mfc/src/ docmgr.cpp (bad programming style)
  • Derive a class from CMultiDocTemplate (here named CMultMultiDocTemplate)
    (this is so your program can recognize multiple file types seperated by a semicolon
    • Override GetDocString
    • Override MatchDocType

(for the last two steps, just add the files MultDocManager.h/cpp and MultMultiDocTemplate.h/cpp to your project)

  • Set m_pDocManager of your main application class (the one that is derived from CWinApp) to new CmultDocManager
  • Open the .rc file of the project and make copies of IDR_...TYPE (for various file types)
  • Go through all the projcet files and everytime IDR_...TYPE is used, also use the new ones you made
  • Override DoSave in your main document class (the one that is derived from CDocument)

References

  • “MFC Document/View documentation and enhancements” by Roger Allen on CodeProject.com
  • “How to support two file extensions per MFC document type” Micorosft support document Article ID 141921
  • “DocMgrEx.exe Assoc Multiple File Extension w/2 Doc Tyle” Micorosft support document Article ID 198538
  • “Selecting multiple files in File Open dialog” by Kaus Gutter on CodeGuru.com
  • “Opening multiple documents of several types at once” by Ernesto Perales Soto on CodeProject.com

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

BabakTaati
Toronto Rehabilitation Institute - UHN
Canada Canada
Member
Babak Taati, Ph.D.
Scientist
AI & Robotics Research Team
Toronto Rehabilitation Institute - UHN
www.torontorehab.com/research

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Generalsome questionsmemberSwingKid2 Dec '04 - 17:02 
GeneralRe: some questionsmemberBabakTaati3 Dec '04 - 7:58 
GeneralRe: some questionsmemberSwingKid4 Dec '04 - 10:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 24 Nov 2004
Article Copyright 2004 by BabakTaati
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid