Программирование на языке MFC

Мой второй блог в серии программирования

Запись в архив объектов


Для того чтобы записать объект в архив, необходимо воспользо­ваться методом WriteObject().Ero исходный код находится в файле arcobj.cpp:

void CArchive::WriteObject(const CObject* pOb) {

// object can be NULL

ASSERT(IsStoringO); // proper direction DWORD nOblndex;

ASSERT(sizeof(nOblndex) == 4); ASSERT(sizeof(wNullTag) == 2); ASSERT(sizeof(wBigObjectTag) == 2); ASSERT(sizeof(wNewClassTag) == 2);

// make sure m_pStoreMap is initialized MapObject(NULL);

if (pOb == NULL) {

// save out null tag to represent NULL pointer *this « wNullTag;

}

else if ((nOblndex = (DWORD)(*m_pStoreMap)[(void*)pOb])

!= 0)

// assumes initialized to 0 map

{

// save out index of already stored object if (nOblndex < wBigObjectTag)

*this « (WORD)nOblndex; else {

*this « wBigObjectTag; *this « nOblndex;

}

else {

// write class of object first

CRuntimeClass* pClassRef = pOb->GetRuntimeClass(); WriteClass(pClassRef);

// enter in stored object table, checking for overflow CheckCount();

(*m_pStoreMap) [ (void*) pOb] = (void**) m_nMapCount++;

// cause the object to serialize itself ((CObject*)pOb)->Serialize(*this); }

Похожие статьи: