一、MFC允许对象在程序运行的整个过程中持久化的串行化机制
(1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程。
(2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构)的状态。
(3)MFC支持CObject类中的串行化,所以,所有继承于CObject的类可以利用CObject的串行化协议。
(4)串行化的基本思想:
a、对象必须能将其当前状态写入到持久化存储媒介中,通常用其成员变量实现。
b、对象可以通过读或反序列化从存储媒介中重新构造对象的状态。
c、串行化处理所有对象指针的细节,以及序列化对象时对对象的循环引用。
d、关键点是对象自己负责读和写其本身的状态,所以,序列化一个对象时,必须是想基本的序列化操作。
(5)MFC使用CArchive类的对象作为被序列化的对象和存储媒介之间的中间媒介。
二、生成一个可串行化的类的步骤
(1) Derive your class from CObject. (定义一个基类为CObject的类)
(2) Override the Serialize member function.(重写串行化函数)
(3) Use the DECLARE_SERIAL macro in the class declaration.(在类声明文件中使用DECLARE_SERIAL宏)
(4) Define a constructor with no arguments (a default constructor).(定义一个无参数的构造函数)
(5) Use the IMPLEMENT_SERIAL macro in the class implementation file.(在实现文件中使用IMPLEMENT_SERIAL宏)
三、实例
Graph.h文件:
- #pragmaonce
-
-
classGraph:publicCObject
- {
-
DECLARE_SERIAL(Graph)
-
public:
-
Graph();
-
Graph(intdrawType,CPointptOld);
-
virtual~Graph();
-
voidSerialize(CArchive&ar);
-
private:
-
intm_drawType;
- CPointm_ptOld;
- };
Graph.cpp文件:
-
-
-
-
#include"stdafx.h"
-
#include"Archive.h"
-
#include"Graph.h"
-
-
-
-
-
IMPLEMENT_SERIAL(Graph,CObject,1)
-
-
Graph::Graph()
-
{
-
}
-
-
Graph::Graph(intdrawType,CPointptOld)
-
{
-
this->m_drawType=drawType;
-
this->m_ptOld=ptOld;
-
}
-
-
Graph::~Graph()
-
{
-
}
-
-
-
voidGraph::Serialize(CArchive&ar)
-
{
-
if(ar.IsStoring())
-
{
-
ar<<m_drawType<<m_ptOld;
-
}
-
else
-
{
-
ar>>m_drawType>>m_ptOld;
-
}
- }
原博客:http://blog.csdn.net/candyliuxj/article/details/6782172
分享到:
相关推荐
在这个"MFC简单Modbus RTU"项目中,开发者使用Visual Studio 2013中的MFC库创建了一个简单的应用,实现了Modbus RTU协议的功能,主要用于控制继电器的开和关操作。这是一个基础的单命令控制Demo,可以帮助初学者理解...
在本项目中,开发者使用MFC框架来实现一个Modbus模拟主站。主站通常是系统中的控制设备,负责发起请求并接收从站(如PLC)的响应。模拟主站意味着程序可以模拟实际主站的功能,用于测试、调试或教学目的。 实现步骤...
1. 基础类:如CObject,是所有MFC类的基类,提供了诸如串行化、动态创建等基础功能。 2. Windows消息处理:通过消息映射机制,简化了窗口类与消息的关联。 3. 对话框和控件:提供了丰富的对话框和控件类,如CDialog...
12. **串行化**:MFC的CDocument类支持数据的串行化,可以将文档内容保存到磁盘,并在以后的运行中加载。 学习和掌握MFC界面编写不仅需要理解Windows编程的基本概念,还需要对C++和面向对象编程有深入理解。通过...
这将为你生成一个基本的MFC框架,包括必要的头文件、源文件和资源文件。 3. **文档/视图架构** MFC中的“文档/视图”架构是一种设计模式,用于分离数据(文档)和显示数据(视图)。文档类存储数据,视图类负责...
7. **串行化(Serialization)**:MFC的串行化机制使得文档类能够将数据保存到磁盘并重新加载,这对于持久化数据存储非常重要。 8. **网络和数据库支持**:MFC提供了对TCP/IP网络编程的支持,同时也封装了ODBC...
MFC还提供了丰富的类库,如串行化支持、数据库访问(ODBC和ADO)、网络编程等,帮助开发者快速构建功能丰富的Windows应用程序。 总之,MFC创建过程是一个涉及类的继承、消息处理、用户界面构建等多个方面的学习过程...
7. **串行化**:MFC提供了串行化机制,通过CSerializable类支持对象的序列化和反序列化,使得数据可以在磁盘和内存之间交换。 8. **数据库支持**:MFC通过ODBC(Open Database Connectivity)类提供数据库访问,如...
8. **串行化**:MFC通过CSerializble类和Serialize函数实现了对象的串行化,用于保存和恢复对象的状态,常用于文件存储或网络传输。 9. **异常处理**:MFC提供了CException类作为异常处理的基础,通过try、catch...
8. **串行化**:MFC的CObject类支持串行化,使得对象可以被序列化到文件或内存,方便数据持久化。 9. **异常处理**:MFC提供了CException类,用于异常处理,使得程序可以优雅地处理错误情况。 10. **国际化和本地...
MFC类的组织结构包括根类CObject,它是所有类的基础,提供了对象创建、销毁、运行时信息、对象串行化等功能。CWinApp类代表应用程序本身,负责应用程序的初始化、运行和结束。CCmdTarget类作为消息映射的基类,处理...
7. **串行化支持(Serialization Support)**:通过继承CObject类,可以实现对象的串行化,将对象的状态保存到文件或内存中,以便后续恢复。 8. **动态链接库(Dynamic Link Library,DLL)支持**:MFC提供了一些类...
《VC6 C++ MFC编程实例》是一本面向初学者的指南,主要涵盖了使用Microsoft Visual C++ 6.0(简称VC6)进行MFC(Microsoft ...书中的每个实例都是一个独立的学习单元,帮助读者逐步构建起完整的MFC应用程序开发技能。
7. **串行化**:MFC的CObject类支持串行化,允许对象的数据保存到文件或从文件中加载,这对于数据持久化非常有用。 8. **数据库支持**:MFC包含了ADO(ActiveX Data Objects)和DAO(Data Access Objects)两种...
1. **MFC应用程序向导**:这是创建新MFC项目的起点,它会生成一个包含基本结构的项目模板,包括主框架窗口、文档类、视图类等。 2. **对话框编程**:MFC提供了用于创建和管理对话框的类,如CDialog,通过资源编辑器...
一部分是由于VisualC++代码生成向导所生成的代码所致,另一个原因是因为无数行代码隐藏在MFC类库中。这正是本书使用特殊的方法来写MFC的缘由。本书从让您亲自手写代码开始(不用向导),使用MFCl.0的应用程序结构风格...
在本文中,我们将深入探讨如何使用VC++ MFC(Microsoft Foundation Classes)库开发一个与PLC(Programmable Logic Controller)进行串行通信的程序,实现电机控制,并且利用多线程技术和界面全屏化来优化用户体验。...
- **根类(CObject)**:所有MFC类的基类,提供了诸如对象管理、串行化等功能。 - **应用程序体系结构类**:如CCmdTarget,用于构建应用程序框架,包含命令处理、文档/视图模型等。 - **可视对象类**:如CWnd、...
《串口接收的MFC程序》是一个基于Microsoft Foundation Class (MFC)库开发的应用程序,设计用于实现串行通信中的数据接收功能。在本文中,我们将深入探讨串口通信、MFC框架以及如何利用该程序接收GPS信息。 串口...
1.12.1 MFC如何接收一个寄送消息 18 1.12.2 MFC如何处理接收的消息 18 1.12.3 UI对象 20 1.13 小 结 20 第2章 控制条 21 2.1 通用控制条 21 2.2 用API创建控制条 22 2.3 用MFC创建控制条 24 2.3.1 CToolBarCtrl和...