文档视图框架_第1页
文档视图框架_第2页
文档视图框架_第3页
文档视图框架_第4页
文档视图框架_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、lize( ) 该函数一般需要在文档子类中重载 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,COleCurreny,COleD

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

7、ile: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:modeReadWrite 读写方

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

9、e对象,无视任何警告与错误 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和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论