Compartir a través de


Implementación de activación en contexto

La activación en contexto permite a un usuario interactuar con un objeto incrustado sin salir del documento contenedor. Cuando un usuario activa el objeto, una barra de menús combinada que incluye elementos de las barras de menú de la aplicación de contenedor y de la aplicación de servidor reemplaza la barra de menús principal del contenedor. Por tanto, los comandos y las funciones de ambas aplicaciones estarán disponibles para el usuario, incluida la ayuda contextual del objeto activo. Cuando un usuario empieza a trabajar con alguna de las partes que no sea un objeto del documento, el objeto se desactivará, lo que hará que el menú original del documento contenedor reemplace el menú combinado.

Al principio, esta funcionalidad se le conocía por el nombre de edición en contexto. El nombre se cambió porque la edición es solo una manera de que un usuario interactúe con un objeto en ejecución. Los clips de sonido, por ejemplo, se pueden escuchar en lugar de editarlos. Los clips de vídeo se pueden ver en lugar de editarlos. La activación en contexto es especialmente ideal en el caso de clips de vídeo porque es posible ejecutarlos en contexto, sin llamar a una ventana independiente. Esto podría ser indispensable si el vídeo fuera a verse, por ejemplo, junto con datos de texto adyacentes en el documento contenedor.

La implementación de la activación en contexto es estrictamente opcional en las aplicaciones de contenedor y de servidor. OLE todavía admite el modelo en el que la activación de un objeto hace que la aplicación de servidor abra una ventana independiente. Los objetos vinculados siempre se abren en una ventana independiente para resaltar que residen en un documento independiente.

La activación en contexto comienza con el objeto en respuesta a una llamada a IOleObject::D oVerb de su contenedor. Normalmente, esta llamada se produce en respuesta a un usuario que ha hecho doble clic en el objeto o ha seleccionado un comando (verbo) en el menú Editar de la aplicación de contenedor.

La ventana contextual detecta el teclado y el ratón mientras el objeto incrustado está activo. Cuando un usuario selecciona comandos en la barra de menús combinadas, los mensajes de menú y los comandos asociados se envían a la aplicación del contenedor o del objeto, en función de cuál sea el menú desplegable determinado seleccionado. La entrada por medio de las reglas, barras de herramientas u opciones gráficas de marco de un objeto va directamente al objeto incrustado, que posee estas ventanas.

Un objeto incrustado activado en contexto permanece activo hasta que el contenedor lo desactiva en respuesta a la acción del usuario o el objeto sale voluntariamente del estado activo, como podría pasar con un clip de vídeo, por ejemplo. Un usuario puede desactivar un objeto haciendo clic dentro del documento contenedor, pero fuera de la ventana de activación en contexto del objeto, o haciendo clic en otro objeto. Sin embargo, un objeto activado en contexto permanece activo si el usuario hace clic en la barra de título del contenedor, la barra de desplazamiento o, en concreto, la barra de menús.

Puede implementar un servidor de activación en contexto de objeto como un servidor en proceso (DLL) o un servidor local (EXE). En ambos casos, la barra de menús combinada incluye elementos (normalmente menús desplegables) tanto del servidor como de los procesos del contenedor. En el caso de un servidor en proceso, la ventana de activación en contexto es otra ventana secundaria de la jerarquía de ventanas del contenedor y esta detecta la entrada a través del canal de mensajes de la aplicación de contenedor.

En el caso de un servidor local, la ventana de activación en contexto pertenece al proceso de la aplicación de servidor del objeto incrustado, aunque su ventana primaria pertenece al contenedor. La entrada de la ventana de activación en contexto aparece en la cola de mensajes del servidor y la envía el bucle de mensajes del servidor. Las bibliotecas OLE son responsables de comprobar que los comandos de menú y los mensajes se envían correctamente.

Documentos compuestos