CArchive::MapObject
Gerçekten dosyaya serialize değil harita nesneleri yerleştirmek için bu üye işlev çağrısı, ancak başvurmak ındaki için kullanılabilir.
void MapObject(
const CObject* pOb
);
Parametreler
- pOb
Saklanmasını nesnesi için sabit bir işaretçi.
Notlar
Örneğin, seri, belge hale değil, ancak belgenin bir parçası olan maddeleri seri hale getirilmeye. Çağırarak MapObject, bu öğeleri veya belgeye başvurmak için ındaki izin. Ayrıca, serileştirilmiş SubItems seri hale kendi m_pDocument ters işaretçi.
Arayabileceğiniz MapObject zaman için saklayın ve yükleyin CArchive nesnesi. MapObjectBelirtilen nesne tarafından tutulan iç veri yapılarını ekler CArchive nesne seri hale getirme ve serisini kaldırma sırasında ancak farklı olarak ReadObject ve WriteObject, çağrılmayan nesnesi üzerinde.
Örnek
//MyDocument.h
class CMyDocument : public CDocument
{
public:
DECLARE_SERIAL(CMyDocument)
CObList m_listOfSubItems;
virtual void Serialize(CArchive& ar);
};
//MyDocument.cpp
IMPLEMENT_SERIAL(CMyDocument, CDocument, 1)
void CMyDocument::Serialize(CArchive& ar)
{
CDocument::Serialize(ar);
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
ar.MapObject(this);
//serialize the subitems in the document;
//they will be able to serialize their m_pDoc
//back pointer
m_listOfSubItems.Serialize(ar);
}
//SubItem.h
class CSubItem : public CObject
{
DECLARE_SERIAL(CSubItem)
CSubItem() : m_i(0) {};
public:
CSubItem(CMyDocument * pDoc)
{ m_pDoc = pDoc; }
// back pointer to owning document
CMyDocument* m_pDoc;
WORD m_i; // other item data
virtual void Serialize(CArchive& ar);
};
//SubItem.cpp
IMPLEMENT_SERIAL(CSubItem, CObject, 1);
void CSubItem::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// will serialize a reference
// to the "mapped" document pointer
ar << (CObject *)m_pDoc;
ar << m_i;
}
else
{
// Will load a reference to
// the "mapped" document pointer
ar >> (CObject *&) m_pDoc;
ar >> m_i;
}
}
Gereksinimler
Başlık: afx.h