mfc 串行化数据和 c++ 对象

mfc 串行化数据和 c++ 对象

ID:12073797

大小:86.00 KB

页数:25页

时间:2018-07-15

mfc 串行化数据和 c++ 对象_第1页
mfc 串行化数据和 c++ 对象_第2页
mfc 串行化数据和 c++ 对象_第3页
mfc 串行化数据和 c++ 对象_第4页
mfc 串行化数据和 c++ 对象_第5页
资源描述:

《mfc 串行化数据和 c++ 对象》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、使用MFC串行化数据和C++对象作者:JerryZ串行化数据——例子程序:Memo  创建一个新的单文档SDI应用,视图类选择CFormView,以便用户可以在窗口中输入。在界面中创建三个编辑框,然后再添加三个相应的编辑框变量。这三个变量是视图类的成员变量,为了交互数据,文档类中也要创建三个对应的变量。然后,文档类和视图类都要对数据成员进行初始化操作,在文档类中这个工作通常都在OnNewDocument()函数中进行。因为下面任何一个操作发生时都触发文档类OnNewDocument()函数执行:·当用户启动应用程序;·当用户在“File”菜单中选择“

2、New”选项;视图类的初始化通常由OnInitialUpdate()负责,下面的任何一个操作发生时,代码都会触发视图类OnInitialUpdate()函数执行:·当用户启动应用程序;·当用户在“File”菜单中选择“New”选项;·当用户从“File”菜单中选择“Open”选项;在视图类中获得文档类指针的方法是:CFooDoc*pDoc=GerDocument();用此文档指针便可以操作文档类数据:m_ViewData=pDoc->m_DocData;串行化的代码很简单,ar是一个与用户选择的文件相对应的文档对象(CArchive对象)://CFo

3、oDoc序列化voidCFooDoc::Serialize(CArchive&ar){if(ar.IsStoring()){//将数据写入文件ar<>m_DocData;}}  这样就将数据写入了文件,选择“File”菜单中的“Save”或者“Saveas”即可完成数据的串行化。如果没有保存数据,退出程序是会提示用户是否保存修改过的数据。具体细节请参考源代码。串行化C++对象——例子程序:PHN创建一个新的单文档SDI应用,视图类选择CFormView,以便可以有窗口中用户可以输入。声明一个

4、要串行化的C++类。如CPhone;文档类的处理:  在文档类中声明一个MFCCObList类对象,这个类很有用,功能也很强,用它可以很轻松地维护C++对象列表,例如添加、删除列表元素等。在文档类的头文件中作如下声明:CObListm_PhoneList;  上面的声明可以是public类型,这样其它类可以直接访问它。也可以是private类型,这样就必须声明一个公共的访问函数,比如:GetPhoneList(),这个函数能返回m_PhoneList的地址。通常可以在文档类的OnNewDocument()函数中进行数据初始化;//CreateaCPh

5、oneObjectCPhone*pPhone=newCPhone();pPhone->m_Name="";pPhone->m_Phone="";//Addnewobjecttothem_PhoneListlistm_PhoneList.AddHead(pPhone);  在此CPhone类的成员变量的初始化不是必须的,因为CPhone的构造函数已经完成了这个工作。AddHead()函数向m_PhoneList列表添加刚创建的CPhone对象。所以,无论什么时候创建新文档(如启动应用程序)都会向m_PhoneList列表中添加一个空的CPhone对象。

6、注意类CObList的成员函数AddHead()是向列表的“头部”添加对象(列表的开始),所以参数是想要添加的对象的地址。删除m_PhoneList列表中的内容  因为m_PhoneList是在内存中维护的,所以要随时维护,只要下面三个事件中的任何一个事件发生,都需要从内存中删除m_PhoneList列表中的对象:·用户退出应用程序;·用户开始一个新的文档,如从“File”菜单中选择“New”选项;·用户打开一个已存在的文档,如从“File”菜单中选择“Open”选项;在文档类的头文件中声明删除操作的函数:virtualvoidDeleteConte

7、nts();其实现如下://删除列表中的所有项目并释放列表对象占用的内存while(!m_PhoneList.IsEmpty()){deletem_PhoneList.RemoveHead();}视图类处理:声明视图类的数据成员:POSITIONm_position;//在文档类列表中的当前位置CObList*m_pList;//指向文档类的列表在OnInitialUpdate()函数中初始化视图类的数据成员POSITIONm_position;CObList*m_pList;//获取文档类指针CFooDoc*pDoc=(CFooDoc*)GetDo

8、cument();//获得文档类m_PhoneList的地址m_pList=&(pDoc->m_PhoneL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。