串行化类

  • 从CObject类派生(或从CObject的派生类派生)

  • 重写Serialize()

  • 使用DECLARE_SERIAL在类中声明

DECLARE_SERIAL(class_name)//class_name类名
  • 定义不带参数的构造函数

  • 类实现文件中使用IMPLEMENT_SERIAL定义

IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) 
//class_name类名称 base_class_name基类名称 wSchema版本号

MyClass的实现如下:

#pragma once


class MyClass : public CObject
{
    DECLARE_SERIAL(MyClass);
public:
    MyClass();
    virtual ~MyClass();
public:
    virtual void Serialize(CArchive& ar);
};
// MyClass.cpp : implementation file
//

#include "stdafx.h"
#include "TestSingDoc2.h"
#include "MyClass.h"


// MyClass
IMPLEMENT_SERIAL(MyClass,CObject,VERSIONABLE_SCHEMA|5)


MyClass::MyClass()
{
}

MyClass::~MyClass()
{
}


// MyClass member functions

void MyClass::Serialize(CArchive& ar)
{
    if (ar.IsStoring())
    {    // storing code
    }
    else
    {    // loading code
    }
}
原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/5485941.html