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 CDocItem
clase 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 CWinApp
aplicació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 CWinApp
definició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
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
, OnOpenDocument
y OnSaveDocument
.
Consulte también
Ejemplo MFC de OCLIENT
COleDocument (clase)
Gráfico de jerarquías
CDocTemplate (clase)