Udostępnij za pośrednictwem


CArchive::MapObject

Wywołać funkcję Członkowskie umieścić obiekty na mapie tak naprawdę nie są szeregowane do pliku, ale dostępnych dla podobiektów odwołać.

void MapObject( 
   const CObject* pOb  
);

Parametry

  • pOb
    Stała wskaźnik do obiektu są przechowywane.

Uwagi

Na przykład nie może szeregować dokumentu, ale będzie serializować elementy, które są częścią dokumentu.Wywołując MapObject, umożliwić te elementy lub podobiektów do referencyjnego dokumentu.Również można szeregować szeregowany podelementy ich m_pDocument wskaźnik Wstecz.

Można wywołać MapObject podczas przechowywania do i załadować z CArchive obiektu.MapObjectDodaje określony obiekt do wewnętrznych struktur danych przez CArchive obiektu podczas serializacji i deserializacji, ale w przeciwieństwie do funkcji ReadObject i funkcji WriteObject, nie wywołuje serializować obiektu.

Przykład

//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;
   }
}

Wymagania

Nagłówek: afx.h

Zobacz też

Informacje

Klasa CArchive

Diagram hierarchii

CArchive::ReadObject

CArchive::WriteObject