Compartir vía


Clase COleLinkingDoc

La clase base para documentos contenedores de OLE que admiten la vinculación a los elementos incrustados que contienen.

Sintaxis

class COleLinkingDoc : public COleDocument

Miembros

Constructores públicos

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

Métodos públicos

Nombre Descripción
COleLinkingDoc::Register Registra el documento con los archivos DLL del sistema OLE.
COleLinkingDoc::Revoke Revoca el registro del documento.

Métodos protegidos

Nombre Descripción
COleLinkingDoc::OnFindEmbeddedItem Busca el elemento incrustado especificado.
COleLinkingDoc::OnGetLinkedItem Busca el elemento vinculado especificado.

Comentarios

Una aplicación contenedora que admite la vinculación a elementos incrustados se denomina «contenedor de vínculos». La aplicación de ejemplo OCLIENT es un ejemplo de un contenedor de vínculos.

Cuando el origen de un elemento vinculado es un elemento incrustado en otro documento, ese documento contenedor debe cargarse para que se edite el elemento incrustado. Por este motivo, otra aplicación contenedora de contenedores debe poder iniciar un contenedor de vínculos cuando el usuario desea editar el origen de un elemento vinculado. Tu aplicación también debe usar la clase COleTemplateServer para que pueda crear documentos cuando se inicie mediante programación.

Para convertir tu contenedor en un contenedor de vínculos, deriva la clase de documento de COleLinkingDoc en lugar de COleDocument. Al igual que con cualquier otro contenedor OLE, debes diseñar la clase para almacenar los datos nativos de la aplicación, así como los elementos incrustados o vinculados. Además, debes diseñar estructuras de datos para almacenar los datos nativos. Si defines una CDocItemclase derivada de para los datos nativos de la aplicación, puedes usar la interfaz definida por COleDocument para almacenar los datos nativos, así como los datos OLE.

Para permitir que otro contenedor inicie la aplicación mediante programación, declara un COleTemplateServer objeto como miembro de la clase derivada de la CWinAppaplicación:

class COleContainerApp : public CWinApp
{
protected:
   COleTemplateServer m_server;
   // remainder of class declaration omitted

En la InitInstance función miembro de la clase derivada de CWinApp, crea una plantilla de documento y especifica la clase derivada de COleLinkingDoc como clase de documento:

// CMyLinkDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_LINKDOCTYPE,
   RUNTIME_CLASS(CMyLinkDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CMyLinkView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_OLECONTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);

Conecta el COleTemplateServer objeto a las plantillas de documento llamando a la función miembro del ConnectTemplate objeto y registra todos los objetos de clase con el sistema OLE llamando a COleTemplateServer::RegisterAll:

m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();

Para obtener una CWinAppdefinición de clase derivada de ejemplo y una función InitInstance, consulta OCLIENT. H y OCLIENT. CPP en el ejemplo de MFC OCLIENT.

Para obtener más información sobre el uso de COleLinkingDoc, consulta los artículos Contenedores: Implementación de un contenedor y contenedores: Características avanzadas.

Jerarquía de herencia

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

Requisitos

Encabezado: afxole.h

COleLinkingDoc::COleLinkingDoc

Construye un objeto COleLinkingDoc sin iniciar comunicaciones con los archivos DLL del sistema OLE.

COleLinkingDoc();

Comentarios

Debes llamar a la función miembro Register para informar a OLE de que el documento está abierto.

COleLinkingDoc::OnFindEmbeddedItem

Lo llama el marco para determinar si el documento contiene un elemento OLE incrustado con el nombre especificado.

virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);

Parámetros

lpszItemName
Puntero al nombre del elemento OLE incrustado solicitado.

Valor devuelto

Un puntero al elemento especificado; NULL si no se encuentra el elemento.

Comentarios

La implementación predeterminada busca en la lista de elementos incrustados un elemento con el nombre especificado (la comparación de nombres distingue mayúsculas de minúsculas). Invalida esta función si tienes tu propio método para almacenar o nombrar elementos OLE incrustados.

COleLinkingDoc::OnGetLinkedItem

Lo llama el marco para comprobar si el documento contiene un elemento de servidor vinculado con el nombre especificado.

virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);

Parámetros

lpszItemName
Puntero al nombre del elemento OLE vinculado solicitado.

Valor devuelto

Un puntero al elemento especificado; NULL si no se encuentra el elemento.

Comentarios

La implementación predeterminada COleLinkingDoc siempre devuelve NULL. Esta función se invalida en la clase COleServerDoc derivada para buscar en la lista de elementos de servidor OLE de un elemento vinculado con el nombre especificado (la comparación de nombres distingue mayúsculas de minúsculas). Invalida esta función si ha implementado tu propio método de almacenamiento o recuperación de elementos de servidor vinculados.

COleLinkingDoc::Register

Informa a los archivos DLL del sistema OLE que el documento está abierto.

BOOL Register(
    COleObjectFactory* pFactory,
    LPCTSTR lpszPathName);

Parámetros

pFactory
Puntero a un objeto de fábrica OLE (puede ser NULL).

lpszPathName
Puntero a la ruta de acceso completa del documento de contenedor.

Valor devuelto

Es distinto de cero si el documento se ha registrado correctamente; de lo contrario, es 0.

Comentarios

Llama a esta función al crear o abrir un archivo con nombre para registrar el documento con los archivos DLL del sistema OLE. No es necesario llamar a esta función si el documento representa un elemento incrustado.

Si usas COleTemplateServer en tu aplicación, llamas a Register mediante la implementación de COleLinkingDoc de OnNewDocument, OnOpenDocument y OnSaveDocument.

COleLinkingDoc::Revoke

Informa a los archivos DLL del sistema OLE que el documento ya no está abierto.

void Revoke();

Comentarios

Llama a esta función para revocar el registro del documento con los archivos DLL del sistema OLE.

Debes llamar a esta función al cerrar un archivo con nombre, pero normalmente no es necesario llamarlo directamente. se llama a Revoke mediante la implementación de tu COleLinkingDoc de OnCloseDocument, OnNewDocument, OnOpenDocumenty OnSaveDocument.

Consulte también

Ejemplo MFC de OCLIENT
COleDocument (clase)
Gráfico de jerarquías
CDocTemplate (clase)