MFC多文档机制实例

本文介绍了如何在MFC中实现多文档机制,通过重载OnOpenDocument函数来支持打开多个文档,包括txt文本和bmp图片。关键在于修改.rc文件的STRINGTABLE,调整对话框过滤器,并创建对应文档类。文章还提到了使用CArchive类读取文件时可能出现的Unicode编码问题,建议使用std::fstream代替。
摘要由CSDN通过智能技术生成

源于之前转的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加入到应用程序中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值