MDI和SDI的区别.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:3 大小:23KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

MDI和SDI的区别.doc

MDI和SDI的区别.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第十七章:读和写文档--MDI应用程序1,MFC库中CMDIFrameWnd类封装了主框架窗口和MDI客户窗口所有的函数(包含了所有WindowsMDI消息的消息控制函数),因而完全可以管理它的子窗口(由CMDIChildWnd类对象来表示的)。2,MDI应用程序中,任何时候只有一个子窗口处于活动状态。MDI应用程序只有以个菜单和工具栏,其上的所有的命令都被传递到当前活动子窗口中。主窗口的标题栏中显示活动窗口的文档文件名。3,MDI应用程序在启动次序上和SDI程序大部分相同。MDI中被派生类中重载的InitInstance函数与SDI有所不同。(具体的不同跟踪下代码或见362页啊,我就不抄了)4,MDI应用程序实质:一个MDI应用程序可以使用多个文档类型,并允许同时存在不止一个的文档对象。比较:SDI中:CSingleDocTemplate*pDocTemplate;pDocTemplate=newCSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CStudentDoc),RUNTIME_CLASS(CMainFrame),//mainSDIframewindowRUNTIME_CLASS(CStudentView));AddDocTemplate(pDocTemplate);MDI中:CMultiDocTemplate*pDocTemplate;pDocTemplate=newCMultiDocTemplate(IDR_EX17ATYPE,RUNTIME_CLASS(CStudentDoc),RUNTIME_CLASS(CChildFrame),//customMDIchildframeRUNTIME_CLASS(CStudentView));AddDocTemplate(pDocTemplate);//MDI中AddDocTemplate(pDocTemplate)的调用使得MDI应用程序能够支持多个子窗口,而每个子窗口都与一个文档对象和一个视图对象相连接。若干个子窗口(及其相应的视图对象)也可能与一个文档对象相连接。//MDI动态的创建CChildFrame对象。5,只能有一个框架窗口类和一个框架窗口对象SDI(CMainFrame:CFrameWnd);MDI应用程序有两个框架窗口类,并且可以有多个框架对象,即:CMainFrame:CMDIFrameWnd只有一个对应对象有菜单和控制栏无视图CChildFrame:CMDIChildWnd每个子窗口对应一个对象无菜单和控制栏有视图对象的创建:CMainFrame对象在应用程序类的InitInstance函数中(即CMainFrame*pMainFrame=newCMainFrame;)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.2401:15作者:npuwanglei收藏|评论:0VC技术内幕(第四版)笔记(第16章)分类:VC学习第十六章:读和写文档--SDI应用程序一,序列化:1,序列化:对象可以被持续,即当程序退出时候它们被存盘,当程序重启时候它们又可被恢复,对象这种存盘和恢复处理过程称之为序列化。注意:MFC库中,不能利用序列化来代替数据库管理系统。与文档相关的所有对象只能在某个单独的磁盘文件中进