Menús y recursos: Adiciones de contenedor
En este artículo se explica los cambios que deben realizarse a los menús y otros recursos en una aplicación contenedora de edición visual.
En aplicaciones contenedoras, dos tipos de cambios deben establecer: modificaciones en los recursos existentes para admitir la edición visual) y la adición de nuevos recursos utilizados para la activación en contexto.Si utiliza el asistente para aplicaciones para crear la aplicación contenedora, estos pasos se realiza automáticamente, pero pueden requerir alguna personalización.
Si no utiliza el asistente para aplicaciones, puede que desee examinar OCLIENT.RC, el script de recursos para la aplicación de ejemplo OCLIENT, para ver cómo se implementan estos cambios.Vea a MFC el ejemplo OLE OCLIENT.
Temas cubiertos en incluyen de caso:
Adiciones de menú de contenedor
Adiciones de la tabla de aceleradores
Adiciones de la tabla de cadenas
Adiciones de menú de contenedor
Debe agregar los siguientes elementos al menú Edición:
Elemento |
Propósito |
---|---|
Nuevo objeto INSERT |
Abra el cuadro de diálogo OLE de objeto INSERT para insertar un elemento incrustado o vinculado en el documento. |
Pegar vínculo |
Pega un vínculo al elemento en el portapapeles en el documento. |
Verbo OLE |
Llama al verbo primario del elemento seleccionado.El texto de los cambios de este elemento de menú para reflejar el verbo primario del elemento seleccionado. |
Vínculos |
Abra el cuadro de diálogo OLE de los vínculos de edición para cambiar los elementos existentes. |
Además de los cambios enumerados en este caso, el archivo de código fuente debe incluir AFXOLECL.RC, necesaria para la implementación de la biblioteca Microsoft Foundation Class.El objeto New INSERT es la única agregar necesaria de menú.Otros elementos pueden agregar, pero los mostrados aquí son el común.
Debe crear un nuevo menú para la aplicación contenedora si desea admitir la activación en contexto de elementos contenidos.Este menú consta del mismo menú archivo y menús emergentes de ventana empleada cuando los archivos abiertos, pero tiene dos separadores colocados entre ellos.Estos separadores se utilizan para indicar que el elemento del servidor (componente) (aplicación) debe colocar los menús cuando se activan en contexto.Para obtener más información sobre esta técnica de menú-combinación, vea menús y recursos: Combinación de menús.
Adiciones de la tabla de aceleradores de la aplicación contenedora
Pequeños cambios en los recursos de la tabla de aceleradores de aplicación contenedora son necesarios si se admiten la activación en contexto.El primer cambio permite que el usuario presione la tecla de escape para cancelar el modo de edición en contexto.Agregue la siguiente entrada a la tabla principal de aceleradores:
Id. |
Clave |
Tipo |
---|---|---|
ID_CANCEL_EDIT_CNTR |
VK_ESCAPE |
VIRTKEY |
El segundo cambio es crear una nueva tabla de aceleradores que corresponde al nuevo recurso de menú creado para la activación en contexto.Esta tabla tiene las entradas del archivo y menús Ventana además de entrada de VK_ESCAPE anteriormente.El ejemplo siguiente es una tabla de aceleradores creada para la activación en contexto en el ejemplo CONTENEDORde MFC:
Id. |
Clave |
Tipo |
---|---|---|
ID_FILE_NEW |
CTRL+N |
VIRTKEY |
ID_FILE_OPEN |
CTRL+O |
VIRTKEY |
ID_FILE_SAVE |
CTRL+S |
VIRTKEY |
ID_FILE_PRINT |
CTRL+P |
VIRTKEY |
ID_NEXT_PANE |
VK_F6 |
VIRTKEY |
ID_PREV_PANE |
SHIFT+VK_F6 |
VIRTKEY |
ID_CANCEL_EDIT_CNTR |
VK_ESCAPE |
VIRTKEY |
Tabla de cadenas Adiciones para aplicaciones contenedoras
La mayoría de los cambios en las tablas de cadenas para las aplicaciones contenedoras corresponden a los elementos de menú adicionales enumerados en Adiciones de menú de contenedor.Escriba el texto mostrado en la barra de estado cuando se muestra cada elemento de menú.Como ejemplo, éstas son las entradas de la tabla de cadenas que el asistente para aplicaciones genera:
Id. |
Cadena. |
---|---|
IDP_OLE_INIT_FAILED |
Error de inicialización OLE.Asegúrese de que la versión de las bibliotecas OLE es la correcta. |
IDP_FAILED_TO_CREATE |
No se pudo crear el objeto.Asegúrese de que el objeto está escrito en el sistema. |