使用MFC串行化数据和C++对象

<script type="text/JavaScript"> </script> <script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>

串行化数据

——
例子程序:Memo

  创建一个新的单文档 SDI 应用,视图类选择 CFormView,以便用户可以在窗口中输入。 在界面中创建三个编辑框,然后再添加三个相应的编辑框变量。这三个变量是视图类的成员变量,为了交互数据,文档类中也要创建三个对应的变量。然后,文档类和视图类都要对数据成员进行初始化操作,在文档类中这个工作通常都在 OnNewDocument() 函数中进行。因为下面任何一个操作发生时都触发文档类 OnNewDocument()函数执行:

  • 当用户启动应用程序;
  • 当用户在“File”菜单中选择“New”选项;

视图类的初始化通常由 OnInitialUpdate() 负责,下面的任何一个操作发生时,代码都会触发视图类 OnInitialUpdate()函数执行 :

  • 当用户启动应用程序;
  • 当用户在“File”菜单中选择“New”选项;
  • 当用户从“File”菜单中选择 “Open”选项;

在视图类中获得文档类指针的方法是:CFooDoc* pDoc = GerDocument();
用此文档指针便可以操作文档类数据:m_ViewData = pDoc->m_DocData;

串行化的代码很简单,ar 是一个与用户选择的文件相对应的文档对象(CArchive 对象):

// CFooDoc 序列化
void CFooDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// 将数据写入文件
		 ar << m_DocData;
	}
	else
	{
		// 从文件中读取数据
		 ar >> m_DocData;
	}
}

  这样就将数据写入了文件,选择“File”菜单中的“Save”或者“Save as”即可完成数据的串行化。 如果没有保存数据,退出程序是会提示用户是否保存修改过的数据。具体细节请参考源代码。

串行化C++对象

——例子程序:PHN

创建一个新的单文档 SDI 应用,视图类选择 CFormView,以便可以有窗口中用户可以输入。

声明一个要串行化的 C++ 类。如 CPhone;

文档类的处理:
  在文档类中声明一个 MFC CObList 类对象,这个类很有用,功能也很强,用它可以很轻松地维护 C++ 对象列表,例如 添加、删除列表元素等。在文档类的头文件中作如下声明:

CObList m_PhoneList;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值