MFC框架界面开发(四):文档类
来源:互联网 发布:萤火虫壁纸软件 编辑:程序博客网 时间:2024/06/06 12:23
在文档/视图架构的程序中,框架中的视图负责显示信息,文档类(CDocument)则负责存储信息。一个文档类中的信息可以被多个视图类使用。
CDocument类内部调用了归档类(CArchive),后者采用一种序列化的存储架构,即以“流”的形式进行数据的存取。
CArchive类没有基类,它是对CFile类的简单封装,其中重载了“<<”、“>>”操作符函数,使得使用更简洁。
1. 使用CFile类进行数据存储
传统的数据存储方式,一般先将数据定义到一个结构体中,在以结构体为单元利用CFile对象进行循环读/写。
struct SData{ UINT nNumb; char sName[20]; COleDateTime join;}CString pathname="./Users.dat";CFile file;if (file.Open(pathname,CFile::modeCreate | CFile::modeWrite)){ AfxMessageBox("保存出错!"); return;}SData s;int i=0,nCount=m_list.GetItemCount();CString str;while(i<nCount){ s.nNumb=atoi(m_list.GetItemText(i,0)); m_list.GetItemText(i,1,s.sName,sizeof(s.sName)); s.join.ParseDate(m_list.GetItemText(i,2)); file.Write(&s,sizeof(s));//循环写入结构体 ++i;}
2.使用CArchive类进行数据存储
CFile file;if (file.Open(pathname,CFile::modeCreate | CFile::modeWrite)){ AfxMessageBox("保存出错!"); return;}//通过一个处于打开状态的文件,构造一个归档类对象CArchive ar(&file,CArchive::store);int i=0,nCount=m_list.GetItemCount();//必须先把信息总数保存,以供读取时使用ar<<nCount;CString str;while(i<nCount){ int nNumb=atoi(m_list.GetItemText(i,0)); CString sName=m_list.GetItemText(i,1); COleDateTime time; time.ParseDate(m_list.GetItemText(i,2)); ar<<nNumb<<szName<<time;//循环写入结构体 ++i;}
可以看出,不用事先定义一个固定大小的结构体用于组织数据,直接以序列的形式存储,使得不会浪费多余的空间。
3.使用CDocument类进行数据存储
//事先添加一个CDocument的派生类CDoc//定义对象CDoc m_doc;//使用m_doc.OnSaveDocument(pathname);//添加并修改主对话框的序列化函数,将2中的代码封装。//修改CDoc的序列化函数,在其中调用主对话框的序列化函数
阅读全文
0 0
- MFC框架界面开发(四):文档类
- MFC框架界面开发(三):多文档界面
- MFC界面开发笔记(四)
- MFC框架界面开发(五):基于文档模板架构的软件
- MFC框架界面开发(一):视图和框架
- MFC框架界面开发(六):菜单、工具栏及状态栏
- MFC应用程序框架(文档类)
- MFC框架界面开发(二):框架界面的分隔窗口
- MFC文档视图(四)
- MFC模板、文档、视图、框架开发实例
- MFC多文档视图界面(MDI)搭建图像处理框架程序总结
- GuideMap 登陆界面 详细文档(四)
- VS2010/MFC编程入门之一(Ribbon界面开发:创建Ribbon样式的应用程序框架)
- VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)
- MFC--单文档程序(框架)
- MFC多文档框架
- MFC多文档框架
- MFC多文档框架
- ARP、RARP、Inverse ARP的工作原理与区别
- javascript学习笔记(一)
- 后序非递归遍历二叉树
- Hadoop 伪分布式安装的问题
- LeetCode --- 1.Two Sum
- MFC框架界面开发(四):文档类
- Linux——时间
- Ubuntu16.04切换默认python版本
- 找点有意思的事情
- 类和对象、访问限定符、默认成员函数
- Android实现简单倒计时
- 统计学习方法(二)感知器C语音实现
- Spring BeanPostProcessor(后处理器)的简单使用
- 两个不同类型的重载