IMPLEMENT_SERIAL( имя класса, базовый класс, версия ) DECLARE_SERIAL( имя класса ) // имя класса физическое не в кавычках
Эти макроопределения генерируют код необходимый для сохранения и восстановления класса на диск. Продолжение нашей цепочки:
IMPLEMENT_DYNAMIC IMPLEMENT_DYCREATE IMPLEMENT__SERIAL
Все логично, чтобы восстанавливать и сохранять класс надо знать о нем информацию и уметь его динамически создавать. Это следующая ступень развития. А вот для убедительности код.
#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) \ CObject* PASCAL class_name::CreateObject() \ { return new class_name; } \ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \ class_name::CreateObject) \ AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name)); \ CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \ { pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \ return ar; } \