Compartir a través de


COleDocument (clase)

La clase base para los documentos de OLE que admiten la edición visual.

Sintaxis

class COleDocument : public CDocument

Miembros

Constructores públicos

Nombre Descripción
COleDocument::COleDocument Construye un objeto COleDocument.

Métodos públicos

Nombre Descripción
COleDocument::AddItem Agrega un elemento a la lista de los elementos que mantiene el documento.
COleDocument::ApplyPrintDevice Establece el dispositivo de destino de impresión para todos los elementos de cliente de este documento.
COleDocument::EnableCompoundFile Hace que los documentos se almacenen con el formato de archivo de almacenamiento estructurado OLE.
COleDocument::GetInPlaceActiveItem Devuelve el elemento OLE activo en ese momento.
COleDocument::GetNextClientItem Obtiene el siguiente elemento de cliente para iterar.
COleDocument::GetNextItem Obtiene el siguiente elemento de documento para iterar.
COleDocument::GetNextServerItem Obtiene el siguiente elemento de servidor para iterar.
COleDocument::GetPrimarySelectedItem Devuelve el elemento OLE principal seleccionado del documento.
COleDocument::GetStartPosition Obtiene la posición inicial para iniciar la iteración.
COleDocument::HasBlankItems Revisa si hay elementos en blanco en el documento.
COleDocument::OnShowViews Se llama cuando el documento se hace visible o invisible.
COleDocument::RemoveItem Quita un elemento de la lista de elementos que mantiene el documento.
COleDocument::UpdateModifiedFlag Marca el documento como modificado al alterarse uno de los elementos OLE que contiene.

Métodos protegidos

Nombre Descripción
COleDocument::OnEditChangeIcon Controla los eventos en el comando del menú Cambiar icono.
COleDocument::OnEditConvert Controla la conversión de un tipo a otro de un objeto vinculado o insertado.
COleDocument::OnEditLinks Controla los eventos del comando Vínculos en el menú Edición.
COleDocument::OnFileSendMail Envía un mensaje de correo electrónico con el documento adjunto.
COleDocument::OnUpdateEditChangeIcon El marco lo llama para que actualice la interfaz de usuario del comando de la opción del menú Editar o cambiar icono.
COleDocument::OnUpdateEditLinksMenu El marco lo llama para que actualice la interfaz de usuario del comando de la opción del menú Editar/Vínculos.
COleDocument::OnUpdateObjectVerbMenu El marco lo llama para que actualice la interfaz de usuario del comando de la opción del menú Editar ObjectNamey el submenú Verbo al que se accede desde Editar ObjectName.
COleDocument::OnUpdatePasteLinkMenu El marco lo llama para que actualice la interfaz de usuario del comando de la opción del menú Pegado especial.
COleDocument::OnUpdatePasteMenu El marco lo llama para que actualice la interfaz de usuario del comando de la opción del menú Pegar.

Comentarios

COleDocument se deriva de CDocument, lo que permite que las aplicaciones OLE usen la arquitectura documentación o vista que proporciona la biblioteca MFC (Microsoft Foundation Class).

COleDocument trata un documento como una colección de objetos CDocItem para controlar los elementos OLE. Las aplicaciones de contenedor y de servidor necesitan esta arquitectura porque es necesario que los documentos puedan contener elementos OLE. Las clases COleServerItem y COleClientItem derivadas de CDocItem administran las interacciones entre las aplicaciones y los elementos OLE.

Si escribe una aplicación contenedora simple, derive la clase del documento de COleDocument. Si escribe una aplicación contenedora que admite la vinculación con los elementos insertados que contienen los documentos, derive la clase del documento de COleLinkingDoc. Si escribe una aplicación de servidor o una combinación de servidor y contenedor, derive la clase del documento de COleServerDoc. COleLinkingDoc y COleServerDoc se derivan de COleDocument, por lo que estas clases heredan todos los servicios que hay disponibles en COleDocument y CDocument.

Para usar COleDocument, derive una clase de esta y agregue la funcionalidad para administrar los datos que no son OLE de la aplicación, así como los elementos vinculados e incrustados. Si define las clases derivadas de CDocItem para almacenar los datos nativos de la aplicación, puede usar la implementación predeterminada que define COleDocument para almacenar los datos OLE y los que no son OLE. También puede diseñar sus propias estructuras de datos para almacenar los datos que no son OLE separados de los elementos OLE. Para obtener más información, consulte el artículo Containers: Compound Files, (Contenedores: archivos compuestos).

CDocument admite el envío del documento por medio del correo electrónico, si presenta la compatibilidad con correo electrónico (MAPI). COleDocument ha actualizado OnFileSendMail para controlar adecuadamente los documentos compuestos. Para obtener más información, consulte los artículos MAPI y MAPI Support in MFC, (Compatibilidad con MAPI en MFC).

Jerarquía de herencia

CObject

CCmdTarget

CDocument

COleDocument

Requisitos

Encabezado: afxole.h

COleDocument::AddItem

Se llama a esta función para agregar un elemento al documento.

virtual void AddItem(CDocItem* pItem);

Parámetros

pItem
Un puntero al elemento del documento que se va a agregar.

Comentarios

No es necesario llamar a esta función de forma explícita cuando la llama el COleClientItem o un constructor COleServerItem que acepta un puntero a un documento.

COleDocument::ApplyPrintDevice

Llame a esta función para cambiar el dispositivo de destino de impresión para todos los elementos incrustados COleClientItem en el documento de contenedor de la aplicación.

BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
BOOL ApplyPrintDevice(const PRINTDLG* ppd);

Parámetros

ptd
Puntero a una estructura de datos DVTARGETDEVICE, que contiene información sobre el nuevo dispositivo de destino de impresión. Puede ser NULL.

ppd
Puntero a una estructura de datos PRINTDLG, que contiene información sobre el nuevo dispositivo de destino de impresión. Puede ser NULL.

Valor devuelto

Distinto de cero si la función se realizó correctamente; de lo contrario, 0.

Comentarios

Esta función actualiza el dispositivo de destino de impresión del elemento, pero no actualiza la memoria caché de presentación. Para actualizar la memoria en caché de presentación de un elemento, llame a COleClientItem::UpdateLink.

Los argumentos de esta función contienen información que OLE usa para identificar el dispositivo de destino. La estructura PRINTDLG contiene información que Windows usa para inicializar el cuadro de diálogo común Imprimir. Una vez que el usuario cierra el cuadro de diálogo, Windows devuelve información sobre las selecciones del usuario en esta estructura. El miembro m_pd de un objeto CPrintDialog es una estructura PRINTDLG.

Para obtener más información, vea la estructura PRINTDLG en Windows SDK.

Para obtener más información, consulte la estructura DVTARGETDEVICE en Windows SDK.

COleDocument::COleDocument

Construye un objeto COleDocument.

COleDocument();

COleDocument::EnableCompoundFile

Se llama a esta función para almacenar el documento mediante el formato de archivo compuesto.

void EnableCompoundFile(BOOL bEnable = TRUE);

Parámetros

bEnable
Indica si la compatibilidad con archivos compuestos está habilitada o deshabilitada.

Comentarios

También se conoce como almacenamiento estructurado. Normalmente, se llama a esta función desde el constructor de la clase derivada de COleDocument. Para obtener más información sobre los documentos compuestos, consulte el artículo Containers: Compound Files, (Contenedores: archivos compuestos).

Si no llama a esta función miembro, los documentos se almacenarán en un formato de archivo sin estructurar («plano»).

Después de habilitar o deshabilitar la compatibilidad con archivos compuestos en un documento, no debería cambiarse la configuración mientras el documento esté vigente.

COleDocument::GetInPlaceActiveItem

Llame a esta función para obtener el elemento OLE que en ese momento está activado en la ventana de marco que contiene la vista identificada por pWnd.

virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);

Parámetros

pWnd
Puntero a la ventana en la que se muestra el documento contenedor.

Valor devuelto

Puntero al único elemento OLE activo en contexto, NULL si no hay en ese momento ningún elemento OLE en el estado «activo en contexto»

COleDocument::GetNextClientItem

Se llama a esta función repetidamente para acceder a cada uno de los elementos de cliente del documento.

COleClientItem* GetNextClientItem(POSITION& pos) const;

Parámetros

pos
Una referencia a un valor POSITION establecido por una llamada anterior a GetNextClientItem, la función de miembro GetStartPosition devuelve el valor inicial.

Valor devuelto

Un puntero al siguiente elemento de cliente del documento o NULL, si no hay otros elementos de cliente.

Comentarios

Después de cada llamada, se establece el valor de pos del siguiente elemento del documento. que podría ser un elemento de cliente o no.

Ejemplo

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleClientItem* pItem;
CString strType;
while ((pItem = pDoc->GetNextClientItem(pos)) != NULL)
{
   // Use pItem
   pItem->GetUserType(USERCLASSTYPE_FULL, strType);
   TRACE(strType);
}

COleDocument::GetNextItem

Se llama a esta función repetidamente para acceder a cada uno de los elementos del documento.

virtual CDocItem* GetNextItem(POSITION& pos) const;

Parámetros

pos
Una referencia a un valor POSITION establecido por una llamada anterior a GetNextItem, la función de miembro GetStartPosition devuelve el valor inicial.

Valor devuelto

Un puntero al elemento del documento en la posición indicada.

Comentarios

Después de cada llamada, el valor de pos se establece en el valor POSITION del siguiente elemento del documento. Si el elemento recuperado es el último del documento, el nuevo valor de pos es NULL.

Ejemplo

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
CDocItem* pItem;
CString strType;
while (pos != NULL)
{
   pItem = pDoc->GetNextItem(pos);
   // Use pItem
   if (pItem->IsKindOf(RUNTIME_CLASS(COleClientItem)))
   {
      ((COleClientItem*)pItem)->GetUserType(USERCLASSTYPE_FULL, strType);
      TRACE(strType);
   }
}

COleDocument::GetNextServerItem

Se llama a esta función repetidamente para acceder a cada uno de los elementos del servidor del documento.

COleServerItem* GetNextServerItem(POSITION& pos) const;

Parámetros

pos
Una referencia a un valor POSITION establecido por una llamada anterior a GetNextServerItem, la función de miembro GetStartPosition devuelve el valor inicial.

Valor devuelto

Un puntero al siguiente elemento de servidor del documento o NULL, si no hay otros elementos de servidor.

Comentarios

Después de cada llamada, se establece el valor de pos del siguiente elemento del documento, que podría ser un elemento de servidor o no.

Ejemplo

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleServerItem* pItem;
while ((pItem = pDoc->GetNextServerItem(pos)) != NULL)
{
   // Use pItem
}

COleDocument::GetPrimarySelectedItem

El marco lo llama para recuperar el elemento OLE seleccionado en ese momento en la vista indicada.

virtual COleClientItem* GetPrimarySelectedItem(CView* pView);

Parámetros

pView
Puntero al objeto de vista activo que muestra el documento.

Valor devuelto

Un puntero al único elemento OLE seleccionado, NULL si no hay elementos OLE seleccionados o si hay seleccionado más de uno.

Comentarios

La implementación predeterminada busca la lista de elementos OLE contenidos para un elemento único seleccionado y le devuelve un puntero. Si no hay ningún elemento seleccionado o si hay más de uno seleccionado, la función devuelve NULL. Se debe invalidar la función miembro CView::IsSelected en la clase view para que esta función funcione. Invalide esta función si tiene su propio método de almacenamiento de elementos OLE contenidos.

COleDocument::GetStartPosition

Se llama a esta función para obtener la posición del primer elemento del documento.

virtual POSITION GetStartPosition() const;

Valor devuelto

Un valor POSITION que puede usarse al empezar a recorrer en iteración los elementos del documento, NULL si no hay elementos en el documento.

Comentarios

Pase el valor devuelto a GetNextItem, GetNextClientItemo GetNextServerItem.

COleDocument::HasBlankItems

Se llama a esta función para determinar si en el documento hay elementos en blanco.

BOOL HasBlankItems() const;

Valor devuelto

Distinto de cero si en el documento hay elementos en blanco, de lo contrario 0.

Comentarios

Los elementos en blanco tienen un rectángulo vacío.

COleDocument::OnEditChangeIcon

Muestra el cuadro de diálogo Cambiar icono de OLE y modifica el icono que representa el elemento OLE seleccionado en ese momento al icono que seleccione el usuario en el cuadro de diálogo.

afx_msg void OnEditChangeIcon();

Comentarios

OnEditChangeIcon crea e inicia un cuadro de diálogo Cambiar icono COleChangeIconDialog.

COleDocument::OnEditConvert

Muestra un cuadro de diálogo Convertir de OLE y convierte o activa el elemento OLE seleccionado en ese momento en función de las selecciones que ha hecho el usuario en el cuadro de diálogo.

afx_msg void OnEditConvert();

Comentarios

OnEditConvert crea e inicia un cuadro de diálogo Convertir COleConvertDialog.

Un ejemplo de conversión convierte un documento de Microsoft Word en uno de WordPad.

Muestra el cuadro de diálogo Editar vínculos OLE.

afx_msg void OnEditLinks();

Comentarios

OnEditLinks crea e inicia el cuadro de diálogo Vínculos COleLinksDialog con el que el usuario puede cambiar los objetos vinculados.

COleDocument::OnFileSendMail

Envía un mensaje por medio del host de correo residente, (si existe), con el documento como adjunto.

afx_msg void OnFileSendMail();

Comentarios

OnFileSendMail llama a OnSaveDocument para que serialice (guarde) documentos sin título y modificados en un archivo temporal, que se envía después por correo electrónico. Si el documento no se ha modificado, no es necesario un archivo temporal y se envía el original. OnFileSendMail carga MAPI32.DLL si aún no lo ha hecho.

Al contrario que con la implementación de OnFileSendMail para CDocument, esta función controla adecuadamente los archivos compuestos.

Para obtener más información, consulte los artículos MAPI Topics, (Temas de MAPI), y MAPI Support in MFC, (Compatibilidad con MAPI en MFC).

COleDocument::OnShowViews

El marco llama a esta función después de los cambios de estado de visibilidad del documento.

virtual void OnShowViews(BOOL bVisible);

Parámetros

bVisible
Indica si el documento se ha vuelto visible o invisible.

Comentarios

La versión predeterminada de esta función no hace nada. Invalídela para que la aplicación ejecute un procesamiento especial cuando cambie los cambios de visibilidad del documento.

COleDocument::OnUpdateEditChangeIcon

El marco lo llama para que actualice el comando de Cambiar icono en el menú Edición.

afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);

Parámetros

pCmdUI
Un puntero a una estructura CCmdUI que representa el menú que generó el comando actualizar. El controlador de actualizaciones llama a la función miembro Enable de la estructura CCmdUI mediante pCmdUI para que actualice la interfaz de usuario.

Comentarios

OnUpdateEditChangeIcon actualiza la interfaz de usuario del comando en función se si existe un icono válido en el documento o no. Invalide esta función para cambiar el comportamiento.

COleDocument::OnUpdateEditLinksMenu

El marco lo llama para que actualice el comando Vínculos en el menú Edición.

afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);

Parámetros

pCmdUI
Un puntero a una estructura CCmdUI que representa el menú que generó el comando actualizar. El controlador de actualizaciones llama a la función miembro Enable de la estructura CCmdUI mediante pCmdUI para que actualice la interfaz de usuario.

Comentarios

A partir del primer elemento OLE del documento, OnUpdateEditLinksMenu accede a cada elemento, prueba si el elemento es un vínculo y en caso de serlo habilita el comando Vínculos. Invalide esta función para cambiar el comportamiento.

COleDocument::OnUpdateObjectVerbMenu

El marco lo llama para que actualice el comando ObjectName del menú Edición y el submenú Verbo al que se accede desde el comando ObjectName, en el que ObjectName es el nombre del objeto OLE incrustado en el documento.

afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);

Parámetros

pCmdUI
Un puntero a una estructura CCmdUI que representa el menú que generó el comando actualizar. El controlador de actualizaciones llama a la función miembro Enable de la estructura CCmdUI mediante pCmdUI para que actualice la interfaz de usuario.

Comentarios

OnUpdateObjectVerbMenu actualiza la interfaz de usuario del comando ObjectName en función de si un existe en el documento un objeto válido o no. Si existe un objeto, se habilita el comando ObjectName del menú Edición. Al seleccionarse este comando de menú, se muestra el submenú Verbo. El submenú Verbo tiene todos los comandos de verbo disponibles para el objeto, como Edición, Propiedades, etc. Invalide esta función para cambiar el comportamiento.

COleDocument::OnUpdatePasteLinkMenu

El marco lo llama para determinar si un elemento OLE vinculado pueden pegarse desde el Portapapeles.

afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);

Parámetros

pCmdUI
Un puntero a una estructura CCmdUI que representa el menú que generó el comando actualizar. El controlador de actualizaciones llama a la función miembro Enable de la estructura CCmdUI mediante pCmdUI para que actualice la interfaz de usuario.

Comentarios

El comando menú Pegado especial está habilitado o deshabilitado en función de si el elemento puede pegarse en el documento.

COleDocument::OnUpdatePasteMenu

El marco lo llama para determinar si un elemento OLE insertado puede pegarse desde el Portapapeles.

afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);

Parámetros

pCmdUI
Un puntero a una estructura CCmdUI que representa el menú que generó el comando actualizar. El controlador de actualizaciones llama a la función miembro Enable de la estructura CCmdUI mediante pCmdUI para que actualice la interfaz de usuario.

Comentarios

El comando y el botón menú Pegado están habilitados o deshabilitados en función de si el elemento puede pegarse en documento.

COleDocument::RemoveItem

Se llama a esta función para quitar un elemento del documento.

virtual void RemoveItem(CDocItem* pItem);

Parámetros

pItem
Un punto al elemento del documento que se va a quitar.

Comentarios

No suele ser necesario llamar a esta función de forma explícita, la llaman estos destructores para COleClientItem y COleServerItem.

COleDocument::UpdateModifiedFlag

Se llama a esta función para indicar que el documento está modificado cuando se ha alterado uno de los elementos OLE contenidos.

virtual void UpdateModifiedFlag();

Comentarios

De este modo, el marco solicita al usuario que guarde el documento antes de cerrarlo, incluso si los datos nativos del documento no se han modificado.

Consulte también

MFC Sample (contenedor)
Ejemplo MFC de MFCBIND
CDocument (clase)
Gráfico de jerarquías