源于之前转的OnFileOpen和OnOpenDocument那篇文章,只是写菜单项的消息响应函数(即OnFileOpen,处理默认“打开”菜单项ID:ID_FILE_OPEN的事函数件)不能同时打开多个文档,而重载MFC自带的OnOpenDocument则可以打开多个文档。由于暂时对MFC内部机制不是很熟悉所以可以猜想打开多个文档显示图片或文本的代码已经包含进去,但写消息响应函数还是要自己写那部分代码。
OnOpenDocument的缺点就在于不能定制打开文件对话框,其实也就只用修改后缀过滤器。
方法也在网上找到了:http://blog.csdn.net/kujojyotaro/article/details/27070079 见这篇博客的技巧五
即修改.rc文件的stringtable
这次按照http://hi.baidu.com/ecoiboblpwbijye/item/dd05129bab4375f028164733的程序思路写了个实例程序,对多文档程序有了进一步了解。
新建多文档工程,工程名为:MDIDemo。实现既能够打开txt文本又能够打开bmp图片。
关键还是在于App::InitInstance方法内的这步代码
// 将用作文档、框架窗口和视图之间的连接
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MDIDemoTYPE,
RUNTIME_CLASS(CMDIDemoDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CMDIDemoView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
CMultiDocTemplate是实现MDI界面的文档模板,可以看出这段代码就是动态创建一个文档模板然后用AddDocTemplate加入到应用程序中。