实现SDI与MDI的转换

如果想将一个编好的SDI应用程序转换为MDI,首先要建立一个继承于CMDIChidWnd的类,假设为CChldFrm,在CWinApp中作如下变化。

InitInstance()

{

. ...

//instead of adding CSingleDocTemplate

// Add CMultiDocTemplate.

pDocTemplate = new CMultiDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CSDIDoc),

RUNTIME_CLASS(CChldFrm),

// For Main MDI Frame change this frame window from

// CFrameWnd derivative ( i.e. CMainFrame )

// to your CMDIChildWnd derived CChldFrm.

RUNTIME_CLASS(CSDIView));

/// After this it is required to create the main frame window

// which will contain all the child windows. Now this window is

// what was initially frame window for SDI.

CMainFrame* pMainFrame = new CMainFrame;

if (!pMainFrame->LoadFrame(IDR_MAINFRAME))

return FALSE;

m_pMainWnd = pMainFrame;

.....

}

在从CMDIFrameWnd中继承的类CMainFrame代替CFramWnd后,所有的类都将从CMDIFrame继承,而不是CFrameWnd,编译运行后你就会发现程序已经从SDI变换到MDI。

注意:在CMainFram中必须将构造函数从private改为public.否则会出错。

实现SDI与MDI的转换 (转)相关推荐

  1. MFC90条技巧-带目录

    1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...

  2. 【转】MFC学习总结

    HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { if ((pWnd->GetDlgCtrlID() == ...

  3. [转]VC常用小知识

    [转]VC常用小知识   (1) 如何通过代码获得应用程序主窗口的 指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现. AfxGetMai ...

  4. MFC学习总结 (67个技巧)

    1."属性页的添加: 创建对话框的类,该类要从CpropertyPage继承:然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新 ...

  5. vc++经典技巧总结

    1."属性页的添加: 创建对话框的类,该类要从CpropertyPage继承:然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新 ...

  6. MFC 学习技巧的总结

    1."属性页的添加: 创建对话框的类,该类要从CpropertyPage继承:然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新 ...

  7. MFC90条技巧 (带目录)

    1."属性页的添加: 2."List Control中标题栏(Column)的添加: 3."ToolBar和StatusBar中控件的添加: 4."通过Cont ...

  8. CGM/SVG图形文件格式转换 免费

    操作便捷的CGM转SVG图形文件编辑器(支持多种文件格式转换) 互联网上充斥这许多免费的在线图形文件格式转换工具,个体用户可以轻松地将自己所需转换的文件提交到网站并实现各式各样的转换目的. 可如果用户 ...

  9. MFC消息处理学习总结

    Windows消息机制概述 http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html 消息是指什么?      消息系统对于一个win ...

最新文章

  1. Neutron 物理部署方案 - 每天5分钟玩转 OpenStack(68)
  2. 位操作(Bit manipulation)
  3. 《软件项目管理(第二版)》第 1 章——概述 重点部分总结
  4. 速进!2000核实计算资源免费领取,名额有限,即开即送!
  5. 技术核心 | MySQL性能结构优化原理
  6. oracle 游标的替代,Oracle中replace函数和translate函数以及简单的游标
  7. python tuple
  8. SQL Server中的即时文件初始化概述
  9. 强悍的命令行 —— echo、env($PATH)、sudo
  10. MongoDB CRUD命令操作
  11. php微信商城 源代码下载,微信商城(B2C)独立后台版 php版 v1.0
  12. 脉冲触发器和边沿触发器的理解(移位寄存器采用边沿触发)
  13. OpenFace人脸分类器训练
  14. QT报错:The inferior stopped because it received a signal from the Operating System.
  15. c语言printf显示变量,零基础学C语言 笔记一 变量 printf
  16. scss动态生成类名、样式值
  17. 用 CaptureScreenshot捕捉游戏画面(截图,截屏)
  18. 我是僵尸生存java_我的世界1.6.2我是僵尸整合包
  19. matlab画简单长方形,matlab在图像中画长方形(框)
  20. 小学第三册上计算机wps教案,《初始WPS》教学设计——溧阳市横涧小学  夏春芳...

热门文章

  1. T级图片数据Cache思路以及图片服务器搭建方法
  2. HDU-2072 单词数 水题一枚
  3. EasyVS 0.3版本发布 -- 给力变换vs编辑器主题
  4. 在User Control 中使用 CustomValidator
  5. C++中的野指针问题
  6. qml-创建可移动的模态弹出框
  7. C# 中对象与JSON字符串相互转换的三种方法
  8. 动态存储和静态存储区域区别
  9. java包引入顺序_多个相同jar存在时的引用顺序
  10. chrome设置微信ua_新支付宝json_ua分析