文档视图框架课件

上传人:我*** 文档编号:141800331 上传时间:2020-08-12 格式:PPT 页数:26 大小:204KB
返回 下载 相关 举报
文档视图框架课件_第1页
第1页 / 共26页
文档视图框架课件_第2页
第2页 / 共26页
文档视图框架课件_第3页
第3页 / 共26页
文档视图框架课件_第4页
第4页 / 共26页
文档视图框架课件_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《文档视图框架课件》由会员分享,可在线阅读,更多相关《文档视图框架课件(26页珍藏版)》请在金锄头文库上搜索。

1、文档/视图框架,基本内容,文档/视图框架 序列化 CFile 不适用的情况,主要负责初始化、运行和结束应用程序的执行。,负责管理操作数据及显示,并接收用户的输入。,结论: CFrameWnd派生类的负担过重。,一、文档/视图框架,也是一种MVC架构 ModelDocument ViewView ControllerDocument Template 将数据操作和数据显示、用户界面分离 程序每打开一个文件时,创建3个对象: 一个文档对象 一个视图对象 一个窗口框架对象 由文档模板对象负责管理文档、视图和框架窗体对象。,CDocument:UpdateAllViews( ) CDocument:S

2、erialize( ) 该函数一般需要在文档子类中重载 void SXXXDoc:Serialize(CArchive BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle = WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );,(2)一档多视,MFC对于“一档多视”提供下列三个模式: 1)在各自MDI文档窗口中包含同一个视图类的多个视图对象。 2)在同一个文档窗口中包含同一个视图类的多个视图对象(即切分窗口运用于SDI) 3)在单独一个文档窗

3、口中包含不同视图类的多个视图对象。(例如,同一个文档可同时有文字显示方式及图形显示方式的视图)。,二、永久性对象与序列化,内存中的对象可以被以文件的形式存储在永久性存储介质中,而当应用程序把它再从永久性存储介质读入后,如果该对象在内存中能恢复为原来的状态,那么这种对象就叫做永久性对象。在面向对象理论中,能使对象成为永久性对象的机制叫做序列化 。,磁盘,对象在内存中的存储格式转换为文件的格式,内存中的对象,把文件的格式恢复为内存中的存储格式,所谓永久性对象,就是这种对象具有这样一种能力:它提供了一套描述自身的信息(例如对象的类名称及数据在内存中的存储格式等)。当应用程序存储对象时,应用程序可以把

4、这些信息与对象的数据成员一起打包形成文件,存入永久性存储体,而当再将它读入内存时,根据该文件中提供的信息,可以把数据按原样组织起来,从而把对象原原本本恢复出来。 使一个类的对象可以是永久性对象,那么在声明这个类的时候必须使用MFC定义的两个宏: DECLARE_SERIAL IMPLEMENT_SERIAL,序列化,1、从CObject派生而来,即拥有了RTTI,动态创建等机制 2、在类声明中必须有DECLARE_SERIAL宏 3、在类实现中必须有IMPLEMENT_SERIAL宏 4、重载Serialize虚函数,使它能够适当的把类别的成员变量写入文件中。 5、该类必须有一个缺省的构造函数

5、。,对象的序列化,例如某类A为永久化类,如果它声明为: Class A:public CObject DECLARE_SERIAL(A)/声明了序列化 private: int m_X,m_Y; public: A(); /缺省的构造函数 Serialize(CArchive ,由CArchive对象实现序列化工作 CArchive对象重载了操作符 “” 对原始数据进行序列化 (BYTE,WORD,LONG,DWORD,float,double,int,unsigned int,short和char) 可序列化对象 CString,CTime,CTimeSpan,COleVariant,COl

6、eCurreny,COleDateTime,COleDateTimeSpan,CSize,CPoint,CRect,SIZE,POINT和RECT,三、CFile类,计算机的各种应用程序、文档和各种图形是以文件的形式组织的 文件是一块存储区域,可以包含任何以二进制或文本方式记录的信息 CFile类是MFC中文件操作的基类,支持二进制文件,其派生类支持文本文件和内存文件 文件操作一般是在构造函数中打开,在析构函数中关闭,CFile的构造函数,CFile的构造函数有三种类型: CFile:CFile();仅仅有一个文件句柄,需要手工打开、关闭 CFile:CFile(int hFile);给出文件

7、句柄,需要手工关闭文件 CFile:CFile(LPCTSR lPszFileName,UINT nOpenFlags);最完整的构造函数,相当于缺省构造函数加上CFile:Open函数 例如: Char *pFileName=“test.dat”; CFile(pFileName,CFile:modeCreate|CFile:modeWrite);,CFile打开文件的方式,CFile:modeCreate创建方式打开文件,如文件已存在则长度设置为0 CFile:modeNoTruncate 创建文件时如文件已存在不对其进行截断 CFile:modeRead 只读方式打开文件 CFile:m

8、odeReadWrite 读写方式打开文件 CFile:modeWrite 写入方式打开文件 CFile:shareCompat 在使用过程中允许其他进程同时打开文件 CFile:shareDenyNone 在使用过程中允许其他进程对文件进行读写 CFile:shareDenyRead 在使用过程中不允许其他进程对文件进行读取 CFile:shareDenyWrite 在使用过程中不允许其他进程对文件进行写入 CFile:shareExclusive取消对其他进程的所有访问 CFile:typeBinary 设置文件为二进制模式 CFile:typeText 设置文件为文本模式,其它有关函数,

9、Abort()关闭文件及CFile对象,无视任何警告与错误 Open()打开文件,若成功返回非零值 Close()关闭文件,禁止其它的读写操作,关闭后m_hFile的值为NULL 输入输出函数 Read()将文件中的数据读入缓冲区 使用方法:Read(void *lpBuf,UINT ncount),Write()将缓冲区的内容写到文件当前的位置 使用方法:Write(const void *lpBuf,UINT nCount) 文件定位函数 Seek()文件定位函数,使用方法:Seek(LONG lOff,UINT nFrom) SeekToBegin()移动文件定位指针到文件头 SeekToEnd()移动文件定位指针到文件尾 GetLength()返回DWORD型文件长度 SetLength()设置文件的长度,CFile:begin CFile:current CFile:end,BOOL GetStatus( CFileStatus,获取文件的有关信息,CFile和CArchive类之间的关联 CFile theFile; theFile.Open(, CFile:modeWrite); CArchive ar(,四、不适合情况,(1)不是面向数据的应用或数据量很少的应用程序 例如:磁盘扫描程序、时钟程序等。 (2)不使用标准的窗口用户界面的程序 例如:游戏等。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号