MDI与SDI区别.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十七章:读和写文档--MDI应用程序1, MFC库中CMDIFrameWnd类封装了主框架窗口和MDI客户窗口所有的函数(包含了所有Windows MDI消息的消息控制函数),因而完全可以管理它的子窗口(由CMDIChildWnd类对象来表示的)。2,MDI应用程序中,任何时候只有一个子窗口处于活动状态。MDI应用程序只有以个 菜单和工具栏,其上的所有的命令都被传递到当前活动子窗口中。主窗口的标题栏中显示活动窗口的文档文件名。3,MDI应用程序在启动次序上和SDI程序大部分相同。MDI中被派生类中重载的InitInstance函数与SDI有所不同。(具体的不同跟踪下代码或见362页啊,我就不抄了)4,MDI应用程序实质:一个MDI应用程序可以使用多个文档类型,并允许同时存在不止一个的文档对象。比较:SDI中: CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CStudentDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CStudentView)); AddDocTemplate(pDocTemplate);MDI中: CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_EX17ATYPE, RUNTIME_CLASS(CStudentDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CStudentView)); AddDocTemplate(pDocTemplate);//MDI中AddDocTemplate(pDocTemplate)的调用使得MDI应用程序能够支持多个子窗口,而每个子窗口都与一个文档对象和一个视图对象相连接。若干个子窗口(及其相应的视图对象)也可能与一个文档对象相连接。//MDI动态的创建CChildFrame对象。5,SDI只能有一个框架窗口类和一个框架窗口对象(CMainFrame:CFrameWnd);MDI应用程序有两个框架窗口类,并且可以有多个框架对象,即:CMainFrame:CMDIFrameWnd 只有一个对应对象 有菜单和控制栏 无视图CChildFrame:CMDIChildWnd 每个子窗口对应一个对象 无菜单和控制栏 有视图对象的创建:CMainFrame对象在应用程序类的InitInstance函数中(即CMainFrame* pMainFrame = new CMainFrame;);CChildFrame对象是当新的子窗口被打开时,由应用程序框架来创建(MDI中InitInstance函数中ProcessShellCommand的调用用以创建子框架)。6,MDI的InitInstance函数将CWinApp::m_pMainWnd设置成指向应用程序的主框架窗口指针。因而任何时候可以通过AfxGetApp函数来访问m_pMainWnd。7,一个MDI程序包含两个独立的字符串资源,分别由IDR_MAINFRAME和IDR_EX17ATYPE(视具体的项目变化)来标识的。(详细见P361-362)8,创建新文档 和 为现有的文档创建新视图(参见362页,很多条款也不抄了)9,MDI应用程序每次当文档文件从磁盘中载入的时候,都会构造新的文档对象,并且当子窗口被关闭的时候,相应的文档对象被删除。(问题:如果多个子窗口与同一个文档对象相连接,那当一个子窗口被关闭,关联的文档对象会不会同时被删除呢?)10,SDI中不支持多次AddDocTemplate调用(SDI中在应用程序生存周期内,文档对象、视图对象、框架对象只被创建一次),而MDI中却是通过多次调用AddDocTemplate来支持多个文档模板,每个模板可制定不同的文档类、视图类以及MDI子框架类的组合。(注:本章笔记有点粗糙,实例也只看了看没跟踪多少代码,以后找个好实例再补上,时间关系,笔记暂停了些时日,见谅哦)/////////////////////////2006.7.24 01:15 作者:npuwanglei 收藏 | 评论:0VC 技术内幕(第四版)笔记(第16章)分类:VC学习第十六章:读和写文档--SDI应用程序一,序列化:1,序列化:对象可以被持续,即当程序退出时候它们被存盘,当程序重启时候它们又可被恢复,对象这种存

文档评论(0)

sy78219 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档