
- MFC 教程
- MFC - 首页
- MFC - 概述
- MFC - 环境设置
- MFC - VC++ 项目
- MFC - 入门
- MFC - Windows 基础
- MFC - 对话框
- MFC - Windows 资源
- MFC - 属性表
- MFC - Windows 布局
- MFC - 控件管理
- MFC - Windows 控件
- MFC - 消息与事件
- MFC - ActiveX 控件
- MFC - 文件系统
- MFC - 标准 I/O
- MFC - 文档视图
- MFC - 字符串
- MFC - CArray
- MFC - 链表
- MFC - 数据库类
- MFC - 序列化
- MFC - 多线程
- MFC - 互联网编程
- MFC - GDI
- MFC - 库
- MFC 有用资源
- MFC - 快速指南
- MFC - 有用资源
- MFC - 讨论
MFC - 序列化
序列化是指将对象写入或读取到持久性存储介质(如磁盘文件)的过程。序列化非常适合需要在程序执行期间或之后维护结构化数据(例如 C++ 类或结构)状态的情况。
在执行文件处理时,值通常是原始类型(char、short、int、float 或 double)。同样,我们可以一次一个地单独保存许多值。此技术不包括从(作为…的变量)类创建的对象。
MFC 库对序列化具有高度的支持。它从 CObject 类开始,它是大多数 MFC 类的祖先,该类配备了 Serialize() 成员函数。
让我们通过创建一个新的 MFC 项目来了解一个简单的示例。
步骤 1 - 删除 TODO 行并设计您的对话框,如下面的快照所示。

步骤 2 - 为所有编辑控件添加值变量。对于提到的员工 ID 和年龄,值类型为整数,如下面的快照所示。

步骤 3 - 为这两个按钮添加事件处理程序。
步骤 4 - 现在让我们添加一个简单的 Employee 类,我们需要对其进行序列化。这是头文件中 Employee 类的声明。
class CEmployee : public CObject { public: int empID; CString empName; int age; CEmployee(void); ~CEmployee(void); private: public: void Serialize(CArchive& ar); DECLARE_SERIAL(CEmployee); };
步骤 5 - 这是源文件 (*.cpp) 中 Employee 类的定义。
IMPLEMENT_SERIAL(CEmployee, CObject, 0) CEmployee::CEmployee(void) { } CEmployee::~CEmployee(void) { } void CEmployee::Serialize(CArchive& ar) { CObject::Serialize(ar); if (ar.IsStoring()) ar << empID << empName << age; else ar >> empID >> empName >> age; }
步骤 6 - 这是“保存”按钮事件处理程序的实现。
void CMFCSerializationDlg::OnBnClickedButtonSave() { // TODO: Add your control notification handler code here UpdateData(TRUE); CEmployee employee; CFile file; file.Open(L"EmployeeInfo.hse", CFile::modeCreate | CFile::modeWrite); CArchive ar(&file, CArchive::store); employee.empID = m_id; employee.empName = m_strName; employee.age = m_age; employee.Serialize(ar); ar.Close(); }
步骤 7 - 这是“打开”按钮事件处理程序的实现。
void CMFCSerializationDlg::OnBnClickedButtonOpen() { // TODO: Add your control notification handler code here UpdateData(TRUE); CFile file; file.Open(L"EmployeeInfo.hse", CFile::modeRead); CArchive ar(&file, CArchive::load); CEmployee employee; employee.Serialize(ar); m_id = employee.empID; m_strName = employee.empName; m_age = employee.age; ar.Close(); file.Close(); UpdateData(FALSE); }
步骤 8 - 编译并执行上述代码后,您将看到以下输出。

步骤 9 - 在所有字段中输入信息,然后单击“保存”并关闭此程序。

步骤 10 - 它将保存数据。再次运行应用程序并单击“打开”。它将加载员工信息。

广告