Contenedores: Implementar un contenedor
En este artículo se resume el procedimiento para implementar un contenedor y se señala a otros artículos que proporcionan explicaciones más detalladas sobre la implementación de contenedores. También se enumeran algunas características OLE opcionales que puede implementar y los artículos que describen estas características.
Preparar la clase derivada de CWinApp
Inicialice las bibliotecas OLE mediante una llamada a
AfxOleInit
en la función miembroInitInstance
.Llame a
CDocTemplate::SetContainerInfo
enInitInstance
para asignar el menú y los recursos del acelerador que se usan cuando se activa un elemento incrustado en contexto. Para obtener más información sobre este tema, consulte Activación.
Estas características se proporcionan automáticamente al usar el Asistente para aplicaciones MFC para crear una aplicación contenedora. Consulte Creación de un programa EXE de MFC.
Preparar la clase de vista
Realice un seguimiento de los elementos seleccionados manteniendo un puntero o una lista de punteros si admite varias selecciones en los elementos seleccionados. La
OnDraw
función debe dibujar todos los elementos OLE.Invalide
IsSelected
para comprobar si el elemento pasado a él está seleccionado actualmente.Implemente un controlador de mensajes
OnInsertObject
para mostrar el cuadro de diálogo Insertar objeto.Implemente un controlador de mensajes
OnSetFocus
para transferir el foco de la vista a un elemento OLE incrustado activo en contexto.Implemente un controlador de mensajes
OnSize
para informar a un elemento incrustado OLE de que necesita cambiar su rectángulo para reflejar el cambio en el tamaño de su vista contenedora.
Dado que la implementación de estas características varía considerablemente de una aplicación a la siguiente, el asistente para aplicaciones solo proporciona una implementación básica. Es probable que tenga que personalizar estas funciones para que la aplicación funcione correctamente. Para obtener un ejemplo de esto, consulte el ejemplo CONTENEDOR.
Controlar elementos incrustados y vinculados
Derive una clase de COleClientItem. Los objetos de esta clase representan elementos incrustados o vinculados al documento OLE.
Sobrescriba
OnChange
,OnChangeItemPosition
yOnGetItemPosition
. Estas funciones controlan el ajuste de tamaño, el posicionamiento y la modificación de elementos incrustados y vinculados.
El asistente para aplicaciones derivará la clase automáticamente, pero es probable que tenga que invalidar OnChange
y las demás funciones enumeradas con ella en el paso 2 del procedimiento anterior. Las implementaciones de esqueleto deben personalizarse para la mayoría de las aplicaciones, ya que estas funciones se implementan de forma diferente de una aplicación a la siguiente. Para obtener ejemplos de esto, consulte los ejemplos de MFC DRAWCLI y CONTENEDOR.
Debe agregar varios elementos a la estructura de menús de la aplicación contenedora para admitir OLE. Para obtener más información sobre estos temas, vea Menús y recursos: adiciones de contenedores.
También puede admitir algunas de las siguientes características en la aplicación contenedora:
Activación local al editar un elemento incrustado.
Para más información, consulte Activación.
Creación de elementos OLE arrastrando y quitando una selección de una aplicación de servidor.
Para obtener más información, consulte el artículo Arrastrar y colocar en OLE.
Vínculos a objetos incrustados o aplicaciones de contenedor o servidor combinadas.
Para obtener más información, consulte Contenedores: Características avanzadas.