博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC单文档(SDI)转换成多文档(MDI)解决方案
阅读量:2224 次
发布时间:2019-05-09

本文共 1000 字,大约阅读时间需要 3 分钟。

  由VC6.0自动生成的单文档和多文档工程存在着细微的区别,那么怎样将一个自动生成的单文档工程转换成为一个多文档工程呢?这个问题虽然比较简单,稍微细心一点的人都可以自己搞定。在这里,我为大家提供一个比较常见的修改方法,没有什么技术含量,还请大家多提意见!

 

第一步:修改字符串表

添加新项ID为IDR_MYTEST,值为:
/nTest/nTest/n/n/nTest.Document/nTest Document

 

第二步:修改app的InitInstance()方法

 CMultiDocTemplate* pDocTemplate;

 pDocTemplate = new CMultiDocTemplate(
  IDR_MYECG,                  //工程名
  RUNTIME_CLASS(CEcgDoc),
  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  RUNTIME_CLASS(CEcgView));
 AddDocTemplate(pDocTemplate);

 // create main MDI Frame window

 CMainFrame* pMainFrame = new CMainFrame;
 if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  return FALSE;
 m_pMainWnd = pMainFrame;

 

第三步:修改CMainFrame,它几乎和SDI版本完全一样,除了它是CMDIFrameWnd而不是CFrameWnd派生出来的。

头文件中:

class CMainFrame : public CMDIFrameWnd

 

cpp文件中:

IMPLEMENT_DYNCREATE(CMainFrame, CMDIFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

 

其它的地方的CFrameWnd也都得改过来。

第四步:添加派生自CMDIChildWnd的子框架类。
    用户可以通过在PreCreateWindow()函数中添加代码方便的控制子框架窗口的属性。也可以映射消息和重载其他的虚拟函数。

 

具体代码我就不贴出来了,大家可以直接从一个生成的MDI工程中直接将其拷贝过来。

 

OK,over!

---------Origin: 

转载地址:http://ppofb.baihongyu.com/

你可能感兴趣的文章
springboot整合rabbitmq及rabbitmq的简单入门
查看>>
mysql事务和隔离级别笔记
查看>>
事务的传播属性(有坑点)自调用失效学习笔记
查看>>
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
查看>>
动态代理实现AOP
查看>>
23种常见的java设计模式
查看>>
关于被final修饰的基本数据类型一些注意事项
查看>>
java Thread中,run方法和start方法的区别
查看>>
在 XML 中有 5 个预定义的实体引用
查看>>
XML 元素是可扩展的
查看>>
避免 XML 属性?针对元数据的 XML 属性
查看>>
XML DOM nodeType 属性值代表的意思
查看>>
JSP相关知识
查看>>
JDBC的基本知识
查看>>
《Head first设计模式》学习笔记 - 适配器模式
查看>>
《Head first设计模式》学习笔记 - 单件模式
查看>>
《Head first设计模式》学习笔记 - 工厂方法模式
查看>>
《Head first设计模式》学习笔记 - 装饰者模式
查看>>
《Head first设计模式》学习笔记 - 模板方法模式
查看>>
《Head first设计模式》学习笔记 - 外观模式
查看>>