Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describen los pasos necesarios para incorporar características avanzadas opcionales en las aplicaciones de contenedor existentes. Estas características son:
Creación de una aplicación contenedor/servidor
Una aplicación contenedor/servidor es una aplicación que actúa como un contenedor y un servidor. Microsoft Word para Windows es un ejemplo de esto. Puede insertar documentos de Word para Windows en otras aplicaciones y también puede insertar elementos en documentos de Word para Windows. El proceso para modificar la aplicación contenedora para que sea un contenedor y un servidor completo (no se puede crear una aplicación de contenedor o miniservidor combinado) es similar al proceso para crear un servidor completo.
En el artículo Servidores: Implementar un servidor se enumeran varias tareas necesarias para implementar una aplicación de servidor. Si convierte una aplicación contenedora en una aplicación contenedora o servidor, debe realizar algunas de esas mismas tareas, agregando código al contenedor. A continuación se enumeran las cosas importantes que se deben tener en cuenta:
El código de contenedor creado por el Asistente para aplicaciones ya inicializa el subsistema OLE. No tendrá que cambiar ni agregar nada para esa compatibilidad.
Siempre que la clase base de una clase de documento sea
COleDocument, cambie la clase base aCOleServerDoc.Invalide
COleClientItem::CanActivatepara evitar la edición de elementos en su lugar mientras se usa el propio servidor para editar en su lugar.Por ejemplo, el ejemplo OLE de MFC OCLIENT ha incrustado un elemento creado por la aplicación contenedor/servidor. Abra la aplicación OCLIENT y edite localmente el elemento creado por la aplicación contenedor/servidor. Al editar el elemento de la aplicación, decide que desea insertar un elemento creado por el HIERSVR de ejemplo OLE de MFC. Para ello, no puede usar la activación local. Debe abrir completamente HIERSVR para activar este elemento. Dado que la biblioteca microsoft Foundation Class no admite esta característica OLE, la invalidación
COleClientItem::CanActivatele permite comprobar esta situación y evitar un posible error en tiempo de ejecución en la aplicación.
Si va a crear una nueva aplicación y desea que funcione como una aplicación contenedora o servidor, elija esa opción en el cuadro de diálogo Opciones OLE del Asistente para aplicaciones y esta compatibilidad se creará automáticamente. Para obtener más información, consulte el artículo Información general: Creación de un contenedor de controles ActiveX. Para obtener información sobre los ejemplos de MFC, consulte Ejemplos de MFC.
Tenga en cuenta que no se puede insertar una aplicación MDI en sí misma. Una aplicación que es un contenedor o servidor no se puede insertar en sí misma a menos que sea una aplicación SDI.
Vínculos a objetos incrustados
La característica Vínculos a objetos incrustados permite a un usuario crear un documento con un vínculo OLE a un objeto incrustado dentro de la aplicación contenedora. Por ejemplo, cree un documento en un procesador de texto que contenga una hoja de cálculo incrustada. Si la aplicación admite vínculos a objetos incrustados, podría pegar un vínculo a la hoja de cálculo contenida en el documento del procesador de texto. Esta característica permite a la aplicación usar la información contenida en la hoja de cálculo sin saber dónde lo obtuvo originalmente el procesador de texto.
Para vincular objetos incrustados en la aplicación
Derive la clase de documento en
COleLinkingDoclugar deCOleDocument.Cree un identificador de clase OLE (CLSID) para la aplicación mediante el generador de identificadores de clase incluido con las herramientas de desarrollo OLE.
Registre la aplicación con OLE.
Cree un
COleTemplateServerobjeto como miembro de la clase de aplicación.En la función miembro de la clase de
InitInstanceaplicación, haga lo siguiente:Conecte el
COleTemplateServerobjeto a las plantillas de documento llamando a la función miembro delConnectTemplateobjeto.Llame a la
COleTemplateServer::RegisterAllfunción miembro para registrar todos los objetos de clase con el sistema OLE.Llame a
COleTemplateServer::UpdateRegistry. El único parámetro queUpdateRegistrydebe ser OAT_CONTAINER si la aplicación no se inicia con el modificador "/Embedded". Esto registra la aplicación como un contenedor que puede admitir vínculos a objetos incrustados.Si la aplicación se inicia con el modificador "/Embedded", no debe mostrar su ventana principal, similar a una aplicación de servidor.
El OCLIENT de ejemplo OLE de MFC implementa esta característica. Para obtener un ejemplo de cómo se hace esto, consulte la InitInstance función en OCLIENT. Archivo CPP de esta aplicación de ejemplo.