【教学课件】第八章文档和视图.ppt

上传人:小飞机 文档编号:5663129 上传时间:2023-08-07 格式:PPT 页数:34 大小:407.97KB
返回 下载 相关 举报
【教学课件】第八章文档和视图.ppt_第1页
第1页 / 共34页
【教学课件】第八章文档和视图.ppt_第2页
第2页 / 共34页
【教学课件】第八章文档和视图.ppt_第3页
第3页 / 共34页
【教学课件】第八章文档和视图.ppt_第4页
第4页 / 共34页
【教学课件】第八章文档和视图.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《【教学课件】第八章文档和视图.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第八章文档和视图.ppt(34页珍藏版)》请在三一办公上搜索。

1、第八章文档和视图,文档和视图的关系文档模板的作用创建用户自定义类文档的读写,第一节文档/视图结构概述,文档和视图的关系文档模块的功能设计一个简单的文本编辑器,MFC创建的三种应用程序类结构,基于对话框的应用程序类结构SDI应用程序类结构MDI应用程序类结构,基于对话框的应用程序类结构,SDI应用程序类结构,MDI应用程序类结构,文档和视图的关系,数据操作和数据表示的分离,文档和视图的相互访问,文档/视图应用程序的实现,在文档类中定义公有类成员变量描述数据在视图类中的OnDraw()函数中通过pDoc访问文档类中成员变量,输出数据的文本或图形描述定义消息处理函数修改文档数据发出视图更新命令系统接

2、到WM_PAINT消息,自动调用OnDraw函数,OnDraw函数再次访问文档数据,并重新绘制视图,反应文档数据的变化。,文档/视图应用程序的执行顺序,文档模块的功能,创建文档类视图类为视图类提供显示的框架窗口类,SDI应用程序的文档模板功能关系,动态分配SDI文档模板对象,CSingleDocTemplate*pDocTemplate;pDocTemplate=new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CEXSDIDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CEXSDIView);Add

3、DocTemplate(pDocTemplate);,注:代码摘自应用程序类的InitInstance(),程序名为EXSDI,MDI应用程序的文档模板功能关系,动态分配MDI文档模板对象,CMultiDocTemplate*pDocTemplate;pDocTemplate=new CMultiDocTemplate(IDR_MULTITYPE,RUNTIME_CLASS(CMultiDoc),RUNTIME_CLASS(CChildFrame),RUNTIME_CLASS(CMultiView);AddDocTemplate(pDocTemplate);/create main MDI F

4、rame windowCMainFrame*pMainFrame=new CMainFrame;if(!pMainFrame-LoadFrame(IDR_MAINFRAME)return FALSE;m_pMainWnd=pMainFrame;,注:代码摘自应用程序类的InitInstance(),程序名为EXMDI,例8-1设计一个简单的文本编辑器,视图类不从CEditView继承,文档类CStringList Lines/字符串列表保存若干行文本int nLineNum/当前编辑行行号,视图类,按键消息处理函数OnChar()增加一个字符或一行到Lines更新视图,InitUpdate()

5、Ondraw(),第二节创建用户自定义类,使用Object类支持持续性和动态性的宏 编程实例,CObject类的特性,持续性内存中的对象数据可保存到永久介质中动态性IsKindOf(CRunTimeClass*ptr)诊断性将对象状态转储给调用机制AssertValid()Dump(),使用诊断性成员函数示例.,void CEXSDIDoc:AssertValid()constASSERT(!m_Name.IsEmpty();/不能为空 ASSERT(!(m_Age0);/不能小于0CDocument:AssertValid();,void CEXSDIDoc:Dump(CDumpContex

6、t,判断两个成员变量的值是否有效,无效将中止程序运行,将两个成员变量的当前值输出到Debug窗口,使用诊断性成员函数示例,CEXSDIDoc:CEXSDIDoc()#ifdef _DEBUGDump(afxDump);#endif/_DEBUG,调用Dump()函数,在OutPut窗口中观察中间结果,支持持续性和动态性的宏,支持动态性服务 DECLARE_DYNAMICIMPLMENT_DYNAMIC 支持对象的动态创建DECLARE_DYNCREATEIMPLMENT_DYNCREATE提供对象的持续性 DECLARE_SERIALIMPLMENT_SERIAL,例8-2创建CStudent

7、类及应用,创建CStudent类CFormView的使用,第三节文档读写,文档序列化原理序列化与数据类型使用复杂的文档数据,文档序列化原理,Serialize()CArchive类对象arCArchive类的缓冲机制读写CFile类,File/New操作,File/Open操作,File/Save操作,ar的操作类型,WORDLONGDWORDint floatdoublecharunsigned,CSizeCPointCRectCString,MFC提供的集合类,ListCList,CObList,CPtrList,CTypedPtrList,CStringListArrayCObArray

8、,CByteArray,CDWordArray,CPtrArray,CStringArray,CTypedPtrArray。Map CMap,CTypedPtrMap,CStringList,CObArray,多用于存放用户自定义类对象操作函数Add()GetSize()GetAt()RemoveAt()Serialize(),复杂数据的序列化,用户自定义类需要定义Serialize()处理成员变量的输入输出使用CObArray类管理多个对象在文档类的Serialize()函数中,直接调用CObArray类的成员函数Serialize()实现序列化,该函数会处理数组成员的序列化操作。,示例使用CStudent类的序列化,void CStudent:Serialize(CArchive,void CExam8_3Doc:Serialize(CArchive,例8-3录入学生记录,使用CObArray类实现CStudent类的序列化。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号