Share via


CArchive::MapObject

Llame a esta función miembro para colocar los objetos del mapa que no son realmente serializados en el archivo, pero que esté disponible para que los objetos secundarios se hace referencia.

void MapObject(
   const CObject* pOb 
);

Parámetros

  • pOb
    Un puntero constante al objeto que se almacena.

Comentarios

Por ejemplo, puede que no serialice un documento, pero se serializaría los elementos que forman parte del documento.Llamando a MapObject, permite que los elementos, o los objetos secundarios, haga referencia al documento.Además, los subelementos serializados pueden serializar el puntero de reserva de m_pDocument .

Puede llamar a MapObject cuando se almacenado a y carga del objeto de CArchive .MapObject agrega el objeto especificado a las estructuras de datos internas mantenidas por el objeto de CArchive durante la serialización y deserialización pero, a diferencia de ReadObject y de WriteObject, no llama a serializa en el objeto.

Ejemplo

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

Requisitos

encabezado: afx.h

Vea también

Referencia

Clase CArchive

Gráfico de jerarquía

CArchive::ReadObject

CArchive::WriteObject