MFC文件读写——Serialize

Serializable 的必要条件
欲让一个对象有Serialize 能力,它必须衍生自一个Serializable 类别。一个类别意欲成为Serializable,必须有下列五大条件;至于其原因,前面的讨论已经全部交待过了。
1. 从CObject 衍生下来。如此一来可保有RTTI、Dynamic Creation 等机能。
2. 类别的声明部份必须有DECLARE_SERIAL 宏。此宏需要一个参数:类别名称。
3. 类别的实作部份必须有IMPLEMENT_SERIAL 宏。此宏需要三个参数:一是类别名称,二是父类别名称,三是schema no.。
4. 改写Serialize 虚拟函数,使它能够适当地把类别的成员变量写入文件中。
5. 为此类别加上一个default 构造式(也就是无参数之构造式)。这个条件常为人所忽略,但它是必要的,因为若一个对象来自文件,MFC 必须先动态生成它,而且在没有任何参数的情况下调用其构造式,然后才从文件中读出对象资料。


触发过程:点击“文件——保存”,触发CDocument中的ON_COMMAND(ID_FILE_SAVE,OnFileSaveAs)——〉DoSave()——〉OnSaveDocument()——〉Serialize(saveArchive),开始调用程序主Doc中的Serialize函数执行存档,层与层之间的Serialize()通过CArchive::WriteObject(const CObject* pOb)(){}中的

((CObject*)pOb)->Serialize(*this);连接。相见p508-513.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值