WEB开发网
开发学院软件开发VC 使用 MFC 串行化数据和 C++ 对象 阅读

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

 2009-03-07 20:02:29 来源:WEB开发网   
核心提示: 调用列表 Serialize()函数这一步是串行化列表 m_PhoneList,也就是调用 m_PhoneList 的成员函数 Serialize(),使用 MFC 串行化数据和 C++ 对象(7),在什么地方调用呢?记住,无论用户什么时候从“File”菜单中选择&

调用列表 Serialize()函数

这一步是串行化列表 m_PhoneList,也就是调用 m_PhoneList 的成员函数 Serialize()。在什么地方调用呢?记住,无论用户什么时候从“File”菜单中选择“Save”或者“Save as”或“Open”选项,都将执行文档类的 Serialize()函数,所以必须在文档类的 Serialize()函数中调用 m_PhoneList 的 Serialize()函数。

这样一来,无论用户什么时候从 File 菜单中选择 Save/Save as 时,都将把 m_PhoneList 保存在用户选择的文件中,同样地,无论用户什么时候从选择 Open 时,都将把文件中保存的列表信息加载到 m_PhoneList 中来。m_PhoneList 的串行化调用如下:

m_PhoneList.Serialize(ar);

只要在文档类的 Serialize() 函数中调用上面这条语句时,必须把 ar 作为参数传入,它将完成需要串行化 m_PhoneList 列表数据的所有工作。不必在if语句中再做其它处理。

定制串行化

——例子程序:ARCH

串行化处理有时并不需要用户选择文件,此时仍要从或向一个特定文件串行化数据,本部分将描述怎样创建并定制一个 CArchive 对象。创建一个新的单文档 SDI 应用, 工程名为 ARCH。视图类仍然选择 CFormView。视图中两个编辑框和两个按钮,编辑框用于输入数据,“Save to File”按钮用于将输入的数据串行化到文件,“Load from File”按钮用于从文件中抽取数据。为简单起见,文件使用的硬编码。

下面是 “Save to File”的操作代码:


// 用屏幕输入内容更新 m_Var1 和 m_Var2 

UpdateData(TRUE);


// 创建文件 C:ARC.ARC

CFile f;

f.Open("c:\arc.arc",CFile::modeCreate|CFile::modeWrite);


// 创建一个 CArchive 对象,并将文件与对象关联

CArchive ar(&f,CArchive::store);


// 串行化 m_Var1 和 m_Var2 到文档

ar<<m_Var1<<m_Var2;


// 关闭文档

ar.Close();


// 关闭文件

f.Close();

下面是 “Load from File”的操作代码:


// 打开文件 C:ARC.ARC

CFile f;

if ( f.Open("c:\arc.arc",CFile::modeRead == FALSE )

return;


// 创建一个 CArchive 对象,并将文件与对象关联

CArchive ar(&f,CArchive::load);


// 从对象中抽取数据并赋值给成员变量

ar>>m_Var1>>m_Var2;


// 关闭文档

ar.Close();


// 关闭文件

f.Close();


// 更新屏幕显示

UpdateData(FALSE);

以上是三个 MFC 串行化数据的例子,Memo 程序的功能是串行化数据到文件,Phn 程序是串行化 C++ 对象列表到文件,而 ARCH 则是定制串行化。详细实现细节请下载源代码。

上一页  2 3 4 5 6 7 

Tags:使用 MFC 串行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接