MFC数据的保存和打开

您所在的位置:网站首页 文件保存按钮 MFC数据的保存和打开

MFC数据的保存和打开

2024-07-15 20:36| 来源: 网络整理| 查看: 265

MFC中数据的保存和打开有三种处理方式:

第一种:CFileDialog + CFile数据结构体 使用传统的File类,通过这个类的Open、write、read等函数对要保存的数据进行保存。但是使用这种方式保存,就需要将要保存的数据定制成一个结构体,以结构体的对象对数据进行保存。使用这种方式存储数据,有可能会造成数据存储控件的浪费,并且操作不方便。

第二种:CFileDialog + CFile+ CArchive: 使用CArchive这个类,CArchive类对CFile类再封装之后不再使用结构体作为储存单元,把每条信息的的各个字段按照固定顺序存取即可,并且字符串都是按照实际长度进行储存de存储的结构也非常紧凑。CArchive类其中大量重载了“operator>”函数,使用各种类型数据的文件存储更加方便;CArchive类的输出输入功能,仿制了标准的C++的fstrean类的输入输出符号被CDocument类引用后就巧妙的搭建起序列化高级存储结构。

第三种:CFileDialog + CDocument: 使用CDocument类的序列化存储结构那是的数据的存取操作非常的方便。只要调用OnOpenDocument或者OnSaveDocument函数CDocument类内部就会自动构建好CArchive对象,在Serialize虚函数中提供开发者带入的存取数据。CDocument类实现序列化存储的核心是Serialize函数,他既负责用户数据保存也负责数据的加载。、Serialize函数通过参数(CArchive::IsStoring)判断任务性质如果是正在执行保存任务,则调用输出符号,将用户输入的数据保存到文件中,否则调用输入符号将文件中存储的数据提取到应用程序中。

以上这三种方式都可对数据进行存储,每一种方式都是有上一种方式的封装和继承。在以上三种方式中CFileDialog类是打开一个文件选择窗口,选择文件的保存/打开的文件名称和位置。

下面就是对这几种存储方式的使用实例:

第一种:CFileDialog + CFile+数据结构体

1、创建数据存储结构体 struct SDate { int nub; char name[40]; COleDateTime join; }; 2、使用CFileDialog+CFile进行存储数据 void CDocumentDlg::OnSave() { LPCSTR szFilter = "信息文件(*.fff)|*.ff|所有文件|(*.*)|*.*||"; //设置文件过滤器 CFileDialog fileDlg(false,"*.ff",NULL,OFN_OVERWRITEPROMPT,szFilter); //设置文件打开/保存的弹出框 if(IDCANCEL == fileDlg.DoModal()) return; CString szfile = fileDlg.GetPathName(); CFile file; if (!file.Open(szfile,CFile::modeCreate|CFile::modeWrite)) { AfxMessageBox("保存数据失败!"); return; } int i = 0,ncount = m_list.GetItemCount(); SDate date; while(i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3