Aracılığıyla paylaş


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

Ayrıca bkz.

Başvuru

CArchive sınıfı

Hiyerarşi grafik

CArchive::ReadObject

CArchive::WriteObject