MFC多文档中的打开继承自CWinAppEx中的函数OnFileOpen(),这一点在CXXX.cpp中可以看到。比如如下:
// CCVMFCApp
BEGIN_MESSAGE_MAP(CCVMFCApp, CWinAppEx)
ON_COMMAND(ID_APP_ABOUT, &CCVMFCApp::OnAppAbout)
// 基于文件的标准文档命令
ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)
// 标准打印设置命令
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup)
END_MESSAGE_MAP()
中的 ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)
它默认的只能打开一个文档,那如果想打开多个文档肿么办呢?
这里给一个辅助类MutiOpenDocManager,代码如下:
MutiOpenDocManager.h:
// MutiOpenDocManager.h: interface for the CMutiOpenDocManager class.
//
//
#if !defined(AFX_MUTIOPENDOCMANAGER_H__8E7F5957_C207_4C9E_BA92_979203C32025__INCLUDED_)
#define AFX_MUTIOPENDOCMANAGER_H__8E7F5957_C207_4C9E_BA92_979203C32025__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CMutiOpenDocManager : public CDocManager
{
public:
virtual BOOL DoPromptFileNames(CStringList& fileNames,UINT nIDSTitle,DWORD lFlags,BOOL bOpenFileDialog,CDocTemplate* pTemplate);
virtual void OnFileOpen();
CMutiOpenDocManager();
virtual ~CMutiOpenDocManager();
void AppendFilterSuffix(CString &filter, OPENFILENAME &ofn, CDocTemplate *pTemplate, CString