CArchive 对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象)。...
原创
2020-06-11 16:44:46
114阅读
准确地说,CArchive也属于二进制变长数据,由于CArchive采用了CObject的RTTI特性,同时存储了对象类的信息,因此它对于CObject对象的持久化和反持久化来说,的确是"很好很强大"。
早在第3章我们结合CObject讨论过CArchive的相关知识,要想用上CArchive的强大功能,我们需要做的仅仅是将自己的类定义成支持自创建的CObject子类,并且覆盖默认的Seriali
转载
2016-02-24 17:54:00
76阅读
2评论
串行化保存数据 //创建文件
CFile file(_T("1.txt"),CFile::modeCreate | CFile::modeWrite);
//串行化,存储
CArchive ar(&file,CArchive::store);
//
原创
2017-10-07 19:06:14
1255阅读
MFC 提供CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 以下对CArchvie 的内部实现作分析。 1.概述 2.内部数据 3.基本数据读写 4.缓冲区的更新 5.指定长度数据段落的读写 6.字符串的读写 7.CObject派生对象的读写1.概述 CArchive使用了缓冲区,即一段内存空间作为临时数据存储地,对CArchive的读写都先依次排
转载
2021-08-20 14:54:48
77阅读
FMD开发文集 -- CArchive原理作者:冯明德
MFC 提供CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 以下对CArchvie 的内部实现作分析。
1.概述 2.内部数据 3.基本数据读写 4.缓冲区的更新 5.指定长度数据段落的读写 6.字符串的读写 7.CObject派生对象的读写
一.概述
CArchive使用了缓冲区,即一段内存空间作
转载
精选
2008-08-14 20:42:32
487阅读
CArchive 对象提供了一个类型安全缓冲机制CArchive 对象提供了一个类型安全缓冲机制。用于将可序列化对象写入CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象)。、
转载
2013-09-21 12:44:00
101阅读
2评论
1.CArchive写入和读取文件void CGraphicView::OnFileWrite(){// TODO: Add your command handler code hereCFile file("1.txt",CFile::modeCreate | CFile::modeWrite);CArchive ar(&file,CArchive::store);int i=4;cha
转载
2022-04-22 13:59:12
32阅读
1.CArchive写入和读取文件void CGraphicView::OnFileWrite(){// TODO: Add your command handler code hereCFile file("1.txt",CFile::modeCreate | CFile::modeWrite);CArchive ar(&file,CArchive::store);int
原创
2021-07-05 12:53:46
81阅读
首先介绍CArchive这个类(翻译自MSDN):
CArchive类允许你以一种二进制的形式(通常是磁盘)来保存一个复杂的对象网络。当这些对象被delete掉之后这种二进制形式依然存在。
CArchive类没有基类。保存之后,你可以从磁盘中加载这些对象,在内存中重新构建他们,这种将数据持久化的过程成为序列化。
你可以将一个CArchive对象想象成一种二进制流。和输入输出流一样,一个CAr
原创
2011-05-03 16:59:31
655阅读
第十三课
使用CArchive类对文件进行操作。MFC框架程序提供的文件新建与打开功能内部的实现机制。如何利用CDocument类的串行化存储功能保存与加载数据。如何实现类对串行化的支持,CObArray的串行化实现内幕。删除文档数据时常犯的错误。MFC框架程序的文档类和视类的关系,以及如何获得相互的指针引用。
CArchive类 写入 void CGraphic
原创
2010-08-24 23:26:08
452阅读
注意点: 1. 必须类型序列化声明 DECLARE_SERIAL( Person ) 2. 必须写出实现宏 IMPLEMENT_SERIAL(Person, CObject, VERSIONABLE_SCHEMA | 2) 3. 重写CObject中的Serialize函数 void Person::Serialize( CArchive& ar )
转载
2021-07-31 11:21:07
68阅读
CArchive没有基类。 CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。 可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但
CArchive没有基类。 CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络。可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们,使得数据永久保留的过程就叫做“串行化”。 可以把一个archive对象看做一种二进制流。像输入/输出流一样,archive与一个文件相关联并且允许缓冲区从硬盘读出或读入数据。输入/输出流一样处理一系列的A
转载
2023-10-26 22:38:20
133阅读
这篇文章能让初学者快速了解visual C++ MFC中常见的核心的类与函数,虽然全部看下来有点枯燥,但对初学者快速了解MFC的框架结构很有好处。
常用类
CArchive类:用于二进制保存档案
CBitmap类:封装Windows的图形设备接口(GDI)位图
CBrush类:封装图形设备接口(GDI)中的画刷
CButton类:提供Windows按钮控件的
原创
2012-03-06 22:11:00
365阅读
CSocket类是对CAsyncSocket 的继承,因此它也封装了Windows API函数。相对于CAsyncSocket 类,CSocket 是对windows socket API的更高级别的抽象化(心得:换言之,更容易使用,但难以进行如CAsyncSocket 般精准的通讯控制)。CSocket 类和CSocketFile 、CArchive 类一同应用,实现数据的发送和接收。 CAsy
原创
2022-08-31 10:16:37
394阅读
这篇文章能让初学者快速了解visual C++ MFC中常见的核心的类与函数,虽然全部看下来有点枯燥,但对初学者快速了解MFC的框架结构很有好处。 常用类 CArchive类:用于二进制保存档案 CBitmap类:封装Windows的图形设备接口(GDI)位图 CBrush类:封装图形设备接口(GDI)中
原创
2012-03-06 22:11:00
648阅读
假设:工程名为:My文档类的成员变量:CObArray m_ObArray;自定义类1:CShape (实现了自己的串行化)自定义类2:CLine(从CShape派生出来,也实现了串行化)m_ObArray通过自己的.Add函数,保存了一系列CShape类型的指针;而这些指针全部指向Cline对象的; 响应文档类的Serialize(CArchive& ar)——函数中执行
原创
2022-10-20 10:35:41
47阅读
CFile类提供了对文件进行打开,关闭,读,写,删除,重命名以及获取文件信息等文件操作的基本功能,足以处理任意类型的文件操作。 一个读写文件的例子: 文件I/O 虽然使用CArchive类内建的序列化功能是保存和加载持久性数据的便捷方式,但有时在程序中需要对文件处理过程拥有更多的控制权,对于这种文件
转载
2018-09-15 10:23:00
197阅读
2评论
要使用CArchive类加载或保存一个对象,则这个对象所代表的类必须支持串行化。下面介绍如何使一个类具备串行化的功能,一共分为五步。
1、将该类从CObject直接或间接派生。
2、改写虚函数Serialize。
3、在类的声明中使用DECLARE_SERIAL宏。
4、定义一个不带任何参数的构造函数。
5、在类的实现部分使用IMPLEMENT_SERIAL宏。
原创
2011-05-04 14:09:47
595阅读
步骤我们知道CArchive类可以支持基本类型的串行化,还可以支持派生于CObject类的派生类,想要这个派生类支持可串行化,需要如下步骤即可:(1) 从CObject类派生或者从CObject类派生的某个派生类(2) 重写Serialize成员函数,把类的数据成员写入文件。(3) 在类声明中使用“DECLARE_SERIAL”宏(4) 定义不带参数的构造函数(5) 在类的实现文件中使用“IMPL