Esta nota describe las implementaciones de comando estándar proporcionadas por MFC 2.0. Por favor, asegúrese de leer 21 de nota técnica primero ya describe los mecanismos utilizados para implementar muchos de los comandos estándar.
Esta descripción supone conocimiento de las arquitecturas MFC, APIs y práctica de programación común. Tanto documentado como indocumentado "aplicación sólo" APIs se describen. Esto no es un lugar para empezar a aprender sobre las funciones de o cómo se programa en MFC. Por favor consulte la Guía del programador de Visual C++ para obtener información más general y detalles de API documentadas.
El problema
MFC define muchos identificadores de comandos estándar en el archivo de encabezado AFXRES.H. marco soporte para estos comandos varía. Comprender dónde y cómo las clases de marco manejan la voluntad de estos comandos no sólo mostrarle cómo funciona internamente el marco, pero proporcionará información útil sobre cómo personalizar las implementaciones estándar y ojalá te enseñan algunas técnicas para implementar sus propios controladores de comando.
Contenido de esta nota técnica
Cada identificador de comando se describe en dos secciones:
Mayoría de las implementaciones de comando por defecto es mecánicamente en el mapa de mensajes de clase base del marco. Hay algunas implementaciones de comando que requieren cableado explícito en la clase derivada. Éstas se describen en "Nota". Si elige las opciones correctas en AppWizard, estos controladores predeterminados se conectará para usted en la aplicación esqueleto generada.
Convención de nomenclatura
Los comandos estándar siga una Convención de nomenclatura sencilla que le recomendamos que utilice si es posible. Comandos más comunes se encuentran en lugares estándar en la barra de menús de una aplicación. El nombre simbólico del comando comienza con "ID_" seguido del nombre de menú emergente estándar, seguido por el nombre de elemento de menú. El nombre simbólico es en mayúsculas con saltos de palabra de subrayado. Para los comandos que no tienen nombres de elementos de menú estándar, se define un nombre de comando lógico comenzando con "ID_" (por ejemplo, ID_NEXT_PANE).
Usamos el prefijo "ID_" para indicar los comandos que están diseñados para obligarse a elementos de menú, botones de barra de herramientas u otros objetos de interfaz de usuario de comando. Manejo de comandos "ID_" de controladores de comando deben utilizar los mecanismos de ON_COMMAND y ON_UPDATE_COMMAND_UI de la arquitectura de comando MFC.
Recomendamos que utilizar el prefijo "IDM_" estándar para elementos de menú que no siga la arquitectura de comando y necesita código específico del menú para activar y desactivarles. Por supuesto el número de comandos específicos de menú debe ser pequeño ya que después de la arquitectura de comando MFC no sólo hacen controladores de comandos más poderosos (ya que se trabajará con las barras de herramientas) pero hacen el código de controlador de comandos reutilizables.
Rangos de ID
Consulte 20 de nota técnica para obtener más detalles sobre el uso de rangos de ID en MFC.
Comandos estándar de MFC caen en el rango 0xE000 a 0xEFFF. Por favor, no se basan en los valores específicos de estos IDs pues están sujetos a cambios en futuras versiones de la biblioteca.
Su aplicación debe definir sus comandos en el rango 0 x 8000 a 0xDFFF.
Identificadores de comandos estándar
Para cada identificador de comando, existe una cadena de mensaje de línea mensaje estándar que puede encontrarse en las instrucciones del archivo.RC. El ID de cadena para ese mensaje de menú debe ser el mismo que para el identificador de comando.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CWinApp::OnFileNew implementa este comando diferente dependiendo del número de plantillas de documento en la aplicación. Si hay sólo un CDocTemplate, CWinApp::OnFileNew creará un nuevo documento de ese tipo, así como la clase correcta de marco y vista.
Si hay más de un CDocTemplate, CWinApp::OnFileNew solicitará al usuario un cuadro de diálogo (AFX_IDD_NEWTYPEDLG) dejar que seleccione el tipo de documento para utilizar. El seleccionado CDocTemplate se utiliza para crear el documento.
Una personalización común de ID_FILE_NEW es proporcionar una forma diferente y más opciones gráficas de tipos de documento. En este caso puede implementar su propio CMyApp::OnFileNew y colocar en el mapa del mensaje en lugar de CWinApp::OnFileNew. No es necesario llamar a la implementación de la clase base.
Otra personalización común de ID_FILE_NEW es proporcionar un comando separado para crear un documento de cada tipo. En este caso debería definir nuevo comando ID, por ejemplo ID_FILE_NEW_CHART y ID_FILE_NEW_SHEET.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CWinApp::OnFileOpen tiene una aplicación muy sencilla de llamar a CWinApp::DoPromptFileName seguido por CWinApp::OpenDocumentFile con el nombre de archivo o ruta de acceso del archivo para abrir. La rutina de aplicación CWinApp DoPromptFileName , se abrirá el cuadro de diálogo estándar de FileOpen y rellena con las extensiones de archivo obtenidas de las plantillas de documento actual.
Una personalización común de ID_FILE_OPEN es personalizar el cuadro de diálogo de FileOpen o agregar filtros de archivos adicionales. La forma recomendada para personalizar esta es reemplazar la implementación predeterminada con su propio diálogo FileOpen y llamar a CWinApp::OpenDocumentFile del documento nombre de archivo o ruta. No es necesario llamar a la clase base.
CDocument::OnFileClose llama a CDocument::SaveModified para solicitar al usuario que guarde el documento si se ha modificado y, a continuación, llama a OnCloseDocument. Toda la lógica de cierre, incluyendo destruir el documento, se realiza en la rutina OnCloseDocument.
&Notanbsp;ID_FILE_CLOSE actúa diferente desde un mensaje WM_CLOSE o un comando de sistema SC_CLOSE enviados a la ventana de marco de documentos. Cierre de una ventana se cerrará el documento sólo si es la última ventana de marco mostrando el documento. Cerrar el documento con ID_FILE_CLOSE no sólo cerrará el documento pero se cerrar todas las ventanas de marco mostrando el documento.
La aplicación utiliza una rutina auxiliar CDocument::DoSave que se utiliza para OnFileSave y OnFileSaveAs. Si guarda un documento que no se ha guardado antes (es decir, no tiene un nombre de ruta, como en el caso de FileNew) o que se leen desde un documento de sólo lectura, la lógica de OnFileSave actuará como el comando ID_FILE_SAVE_AS y pedir al usuario que proporcione un nombre de archivo nuevo. El proceso real de abrir el archivo y haciendo el ahorro se realiza a través de la función virtual OnSaveDocument.
Hay dos razones comunes para personalizar ID_FILE_SAVE. Para documentos que no guarda, simplemente eliminar el ID_FILE_SAVE los elementos de menú y botones de la barra de herramientas de la interfaz de usuario. También asegúrese de que usted nunca sucio el documento (es decir, nunca llamada CDocument::SetModifiedFlag) y el marco nunca hará que el documento de guardarse. Los documentos que guarde en lugar distinto de un archivo de disco, definir un nuevo comando para la operación.
En el caso de un COleServerDoc, ID_FILE_SAVE se utiliza tanto para archivo Guardar (para documentos normales) y actualización del archivo (para documentos incrustados).
Si los datos del documento se almacenan en archivos de disco individual, pero que no desea utilizar el valor predeterminado CDocument serializar aplicación, debe reemplazar CDocument::OnSaveDocument en lugar de OnFileSave.
La implementación de CDocument::OnFileSaveAs utiliza la misma rutina auxiliar de CDocument::DoSave como OnFileSave. El comando OnFileSaveAs se trata igual que ID_FILE_SAVE si los documentos no tenían ningún nombre de archivo antes de guardar. COleServerDoc::OnFileSaveAs implementa la lógica para guardar un archivo de datos de documento normal o para guardar un documento del servidor que representa un objeto OLE incrustado en otra aplicación como un archivo independiente.
Si personaliza la lógica de ID_FILE_SAVE, probablemente deseará personalizar ID_FILE_SAVE_AS de manera similar o la operación de "Guardar como" puede no ser aplicables a su documento. Puede quitar el elemento de menú de la barra de menús si no es necesario.
La aplicación de COleServerDoc::OnFileSaveCopyAs es muy similar a CDocument::OnFileSaveAs, excepto que el objeto de documento no está "conectado" al archivo subyacente después de guardar. Es decir, si el documento en memoria fue "modificado" antes de guardar, está todavía "modificado". Además, este comando no tiene efecto en el nombre de la ruta o el título almacenada en el documento.
La aplicación de COleServerDoc::OnUpdateDocument simplemente notifiies el contenedor que debe guardarse la incrustación. El contenedor llama la API OLE adecuado para guardar el objeto incrustado.
Actualmente no existe ningún estándar para este cuadro de diálogo, y el marco no tiene ninguna implementación predeterminada de este comando.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
Este comando invoca el cuadro de diálogo de configuración de impresión estándar que permite al usuario personalizar la impresora e imprimir configuración para por lo menos este documento o a lo sumo todos los documentos de esta aplicación. Debe utilizar el Panel de Control para cambiar la configuración de impresora predeterminada para todo el sistema.
CWinApp::OnFilePrintSetup tiene una aplicación muy sencilla crear un objeto CPrintDialog y llamar a la función de aplicación de CWinApp::DoPrintDialog . Esto establece la configuración de impresora predeterminada de aplicación.
La necesidad común de personalización de este comando es permitir la configuración de la impresora al documento, que debe almacenarse con el documento cuando se guardan. Para ello que debe agregar un controlador de mapa de mensajes en la clase CDocument que crea un objeto CPrintDialog , se inicializa con los atributos de la impresora adecuada (normalmente hDevMode y hDevNames), llamada la CPrintDialog::DoModal y guardar la configuración de la impresora ha cambiado. Para una implementación sólida, debería mirar la implementación de CWinApp::DoPrintDialog para la detección de errores y CWinApp::UpdatePrinterSelection para tratar con valores predeterminados razonables y seguimiento de los cambios de todo el sistema de impresión.
&Notanbsp; Debe conectarse a su CView-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
Este comando imprime el documento actual o más correctamente, inicia el proceso de impresión, que consiste en invocar el cuadro de diálogo de impresión estándar y funcionamiento del motor de impresión.
CView::OnFilePrint implementa este comando y el bucle principal de impresión. Llama el virtual CView::OnPreparePrinting para solicitar del usuario con el cuadro de diálogo Imprimir. Luego prepara la salida de CC para ir a la impresora, abre el diálogo de progreso de impresión (AFX_IDD_PRINTDLG) y envía el escape StartDoc a la impresora. CView::OnFilePrint también contiene el bucle de impresión orientada a la página principal. Para cada página, llama el virtual CView::OnPrepareDC seguido por un escape de StartPage y llamando a la virtual CView::OnPrint de esa página. Cuando haya terminado, se llama el virtual CView::OnEndPrinting , y se cierra el cuadro de diálogo de progreso impresión.
La arquitectura de impresión de MFC está diseñada para enlazar en muchas formas diferentes para vista previa de impresión e imprimir. Normalmente encontrará las diversas funciones de CView overridable adecuada para las tareas de impresión orientada en la página. Sólo en el caso de una aplicación que utiliza la impresora para no página orientada a resultados, deben encontrar la necesidad de reemplazar la aplicación ID_FILE_PRINT.
&Notanbsp; Debe conectarse a su CView-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CView::OnFilePrintPreview inicia el modo de vista previa de impresión mediante una llamada a la función auxiliar documentados CView::DoPrintPreview. CView::DoPrintPreview es el motor principal para el bucle de vista previa de impresión, al igual que OnFilePrint es el principal motor para el bucle de impresión.
La operación preliminar puede personalizarse en una variedad de formas pasando parámetros diferentes para DoPrintPreview. Consulte al técnico de nota de 30, que se describen algunos de los detalles de la vista previa de impresión y cómo personalizarlo.
CWinApp::OnUpdateRecentFileMenu es un controlador de interfaz de usuario de comandos de actualización que es uno de los usos más avanzados del mecanismo ON_UPDATE_COMMAND_UI . En su recurso de menú, sólo se necesita definir un elemento de menú único con ID ID_FILE_MRU_FILE1. Ese elemento de menú permanece inicialmente deshabilitado.
Como el MRU lista crece, se agregan elementos a la lista de menú más. Los valores predeterminados aplicación de CWinApp estándar hasta el límite del estándar de la mayoría de los cuatro archivos usados recientemente. Puede cambiar el valor predeterminado al llamar a CWinApp::LoadStdProfileSettings con un valor mayor o menor. La lista MRU se almacena en la aplicación.Archivo INI. La lista es cargada en función de la aplicación InitInstance si llamar LoadStdProfileSettingsy se guarda cuando sale de la aplicación. El controlador de la interfaz de usuario de la actualización comando MRU también convertirá rutas absolutas a rutas de acceso relativas para su visualización en el menú Archivo.
CWinApp::OnOpenRecentFile es el controlador ON_COMMAND que realiza el comando real. Simplemente recibe el nombre de archivo de la lista MRU y llamadas CWinApp::OpenDocumentFile, que hace todo el trabajo de abrir el archivo y actualización de la lista MRU.
No se recomienda la personalización de este controlador de comandos.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando mediante CEdit::Clear. El comando está deshabilitado si no hay ninguna selección actual.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando. Vea el ejemplo de MFC Tutorial a mano alzada para una implementación de ejemplo.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, que copia el texto seleccionado en el Portapapeles como CF_TEXT mediante CEdit::Copy. El comando está deshabilitado si no hay ninguna selección actual.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, que corta el texto seleccionado en el Portapapeles como CF_TEXT mediante CEdit::Cut. El comando está deshabilitado si no hay ninguna selección actual.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, que llama a la función de ayudante de aplicación OnEditFindReplace para usar y almacenar la configuración anterior de buscar y reemplazar en variables de implementación privada. La clase CFindReplaceDialog se utiliza para administrar el cuadro de diálogo no modal para preguntar al usuario.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, que copia los datos del Portapapeles actuales reemplaza el texto seleccionado mediante CEdit::Paste. El comando está deshabilitado si no hay ningún CF_TEXT en el Portapapeles.
COleClientDoc sólo proporciona un controlador de interfaz de usuario de comandos de actualización para este comando. Si el Portapapeles contiene no integrable elemento/objeto OLE, se desactivará el comando. Usted es responsable de escribir el controlador para el comando real hacer pegar real. Si su aplicación OLE también puede pegar otros formatos, debe proporcionar su propio controlador de interfaz de usuario comando de actualización en la vista o el documento (es decir, alguna antes de COleClientDoc en el comando de enrutamiento de destino).
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Para reemplazar la aplicación OLE estándar, utilice COleClientItem::CanPaste.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
COleDocument sólo proporciona un controlador de interfaz de usuario de comandos de actualización para este comando. Si el Portapapeles contiene linkable elemento/objeto OLE, se desactivará el comando. Usted es responsable de escribir el controlador para el comando real hacer pegar real. Si su aplicación OLE también puede pegar otros formatos, debe proporcionar su propio controlador de interfaz de usuario comando de actualización en la vista o el documento (es decir, alguna antes de COleDocument en el comando de enrutamiento de destino).
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Para reemplazar la aplicación OLE estándar, utilice COleClientItem::CanPasteLink.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada. MFC no proporciona este cuadro de diálogo.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando para repetir la última operación de búsqueda. Se utilizan las variables de implementación privada para la última búsqueda. El comando está deshabilitado si no se puede intentar una búsqueda.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, que llama a la función de ayudante de aplicación OnEditFindReplace para usar y almacenar la configuración anterior de buscar y reemplazar en variables de implementación privada. La clase CFindReplaceDialog se utiliza para administrar el cuadro de diálogo no modal que solicita al usuario.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, que selecciona todo el texto del documento. El comando está deshabilitado si no hay texto para seleccionar.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
CEditView proporciona una implementación de este comando, utilizando CEdit::Undo. El comando está deshabilitado si CEdit::CanUndo devuelve FALSE.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para cada CView-clase derivada.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
CMDIFrameWnd::OnWindowNew implementa esta característica poderosa mediante la plantilla de documento del documento actual para crear otro fotograma que contiene otra vista del documento actual.
Como la mayoría múltiples documentos (MDI) interfaz comandos del menú Ventana, el comando está deshabilitado si no hay ninguna ventana de secundario MDI activa.
Personalización de este controlador de comandos no es recomendable. Si desea proporcionar un comando que crea vistas adicionales o ventanas de marco, probablemente será mejor inventar su propio comando. Puede clonar el código de CMDIFrameWnd::OnWindowNew y modificar a las clases específicas de marco y vista de su gusto.
CMDIFrameWnd implementa este comando estándar de MDI en una función de aplicación auxiliar OnMDIWindowCmd. Este Ayudante asigna identificadores de comandos a los mensajes de ventanas MDI y por lo tanto, puede compartir un montón de código.
Como la mayoría comandos del menú ventana MDI, el comando está deshabilitado si no hay ninguna ventana de secundario MDI activa.
No se recomienda la personalización de este controlador de comandos.
CMDIFrameWnd implementa este comando estándar de MDI en una función de aplicación auxiliar OnMDIWindowCmd. Este Ayudante asigna identificadores de comandos a los mensajes de ventanas MDI y por lo tanto, puede compartir un montón de código.
Como la mayoría comandos del menú ventana MDI, el comando está deshabilitado si no hay ninguna ventana de secundario MDI activa.
No se recomienda la personalización de este controlador de comandos.
Este comando se implementa en CMDIFrameWnd al igual que ID_WINDOW_CASCADE, excepto un diferentes ventanas MDI mensaje se utiliza para la operación.
Debe elegir la orientación predeterminada de mosaico para su aplicación. Puede hacerlo cambiando el ID para el elemento de menú "Mosaico" de ventana a ID_WINDOW_TILE_HORZ o ID_WINDOW_TILE_VERT.
Este comando se implementa en CMDIFrameWnd al igual que ID_WINDOW_CASCADE, excepto un diferentes ventanas MDI mensaje se utiliza para la operación.
Debe elegir la orientación predeterminada de mosaico para su aplicación. Puede hacerlo cambiando el ID para el elemento de menú "Mosaico" de ventana a ID_WINDOW_TILE_HORZ o ID_WINDOW_TILE_VERT.
CView maneja este comando para la aplicación de CSplitterWnd . Si la vista es parte de una ventana divisora, este comando delegará la función de aplicación CSplitterWnd::DoKeyboardSplit. Esto colocará el separador en un modo que permitirá a los usuarios de teclado dividir o dividir una ventana divisora.
Este comando se desactiva si la vista no es en un separador.
No se recomienda la personalización de este controlador de comandos.
No hay ninguna implementación estándar para cuadro acerca de una aplicación. La aplicación predeterminada de AppWizard creado creará una clase de diálogo personalizado para su aplicación y utilizarlo como su cuadro sobre. AppWizard también escribirá el controlador de comandos triviales que maneja este comando e invoca el cuadro de diálogo.
Casi siempre implementará este comando.
CWinApp::OnAppExit maneja este comando enviando un mensaje WM_CLOSE a la ventana principal de la aplicación. El estándar de cierre de la aplicación (pedir archivos sucios, etc.) es manejado por la aplicación de CFrameWnd.
Personalización de este controlador de comandos no es recomendable. Cierre la lógica recomienda reemplazar CWinApp::SaveAllModified o el CFrameWnd.
Si decide implementar este comando, le recomendamos que utilice este identificador de comando.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CWinApp::OnHelpIndex maneja este comando llamando trivialmente CWinApp::WinHelp.
No se recomienda la personalización de este controlador de comandos.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CWinApp::OnHelpUsing maneja este comando llamando trivialmente CWinApp::WinHelp.
No se recomienda la personalización de este controlador de comandos.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CWinApp::OnContextHelp maneja este comando estableciendo el cursor del modo de ayuda, entrando en un bucle modal y esperando al usuario seleccionar una ventana para obtener ayuda sobre. Consulte 28 de nota técnica para obtener más detalles sobre la aplicación de ayuda de MFC.
No se recomienda la personalización de este controlador de comandos.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
CWinApp::OnHelp maneja este comando por obtener el contexto adecuado para el contexto actual de la aplicación. Esto controla simple F1 Ayuda, ayuda en cuadros de mensaje y así sucesivamente. Consulte 28 de nota técnica para obtener más detalles sobre la aplicación de ayuda MFC.
No se recomienda la personalización de este controlador de comandos.
&Notanbsp; Debe conectarse a su CWinApp-derivados mapa de mensajes de la clase para habilitar esta funcionalidad.
Este comando se asigna normalmente a CWinApp::OnHelpIndex.
Puede proporcionar un controlador de comandos diferentes si se desea una distinción entre la ayuda predeterminada y el índice de la ayuda.
CView maneja este comando para la aplicación de CSplitterWnd . Si la vista es parte de una ventana divisora, este comando delegará la función de aplicación CSplitterWnd::OnNextPaneCmd. Esto moverá la vista activa al panel siguiente en el separador.
Este comando se desactiva si la vista no es en un separador o no hay ningún panel siguiente para ir a.
No se recomienda la personalización de este controlador de comandos.
CView maneja este comando para la aplicación de CSplitterWnd . Si la vista es parte de una ventana divisora, este comando delegará la función de aplicación CSplitterWnd::OnNextPaneCmd. Esto moverá la vista activa al panel anterior en el separador.
Este comando se desactiva si la vista no es en un separador o no hay ningún panel anterior para ir a.
No se recomienda la personalización de este controlador de comandos.
Actualmente no hay ninguna implementación estándar para este comando. Debe implementar para su CView-derivado de la clase para insertar un nuevo elemento/objeto OLE en la selección actual.
Todas las aplicaciones de cliente OLE deben ejecutar este comando. AppWizard, con la opción de OLE, creará una aplicación esqueleto de OnInsertObject en la clase de vista que usted tendrá que completar.
Vea el ejemplo de MFC OLE ejemplo OCLIENT para una implementación completa de este comando.
COleDocument controla este comando utilizando la implementación proporcionada por MFC de diálogo estándar de vínculos OLE. La aplicación de este cuadro de diálogo se tiene acceso mediante la clase COleLinksDialog . Si el documento actual no contiene ningún enlace, el comando está deshabilitado.
No se recomienda la personalización de este controlador de comandos.
COleDocument utiliza este rango de ID de comando para los verbos admitidos por el elemento/objeto OLE seleccionado actualmente. Esto debe ser una gama desde un determinado tipo de elemento/objeto OLE puede soportar cero o más verbos personalizados. En el menú de la aplicación, debe tener un elemento de menú con el ID de ID_OLE_VERB_FIRST. Cuando se ejecuta el programa, el menú se actualizará con la descripción de verbo del menú adecuado (o el menú emergente con muchos verbos). La gestión del menú OLE es manejada por AfxOleSetEditMenu, hecho en el controlador de interfaz de usuario de comando de actualización para este comando.
No hay controladores de ningún comando explícito para el manejo de cada uno de los ID de comando en este rango. COleDocument::OnCmdMsg se reemplaza para atrapar todos los identificadores de comandos en este rango, convertirlos en números de verbo cero e iniciar el servidor para ese verbo (mediante COleClientItem::DoVerb).
No se recomiendan la personalización u otros usos de este rango de ID de comando.
CFrameWnd maneja este comando y el controlador de interfaz de usuario de comando de actualización para alternar el estado de visibilidad de la barra de herramientas. La barra de herramientas debe ser una ventana secundaria de la trama con el identificador de ventana de niño de AFX_IDW_TOOLBAR. El controlador de comandos realmente activa o desactiva la visibilidad de la ventana de la barra de herramientas. CFrameWnd::RecalcLayout se utiliza para dibujar la ventana de marco con la barra de herramientas en su nuevo Estado. El controlador de interfaz de usuario de comando de actualización comprueba el elemento de menú cuando está visible la barra de herramientas.
Personalización de este controlador de comandos no es recomendable. Si desea agregar barras de herramientas adicionales, desea clonar y modificar el controlador de comandos y el controlador de interfaz de usuario de comando de actualización para este comando.
Este comando está implementado en CFrameWnd al igual que ID_VIEW_TOOLBAR, excepto que se utiliza un identificador de ventana de diferentes secundario (AFX_IDW_STATUS_BAR).
Sólo actualizar controladores de comando
Hay varios identificadores de comandos estándar que se utilizan como indicadores en barras de Estado. Estos utilizan el mismo mecanismo de control de interfaz de usuario de comando de actualización para mostrar su estado visual actual durante el tiempo de inactividad de aplicación. Ya que no pueden ser seleccionadas por el usuario (es decir, empujar un panel de barra de Estado), entonces no tiene sentido tener un controlador de ON_COMMAND para estos identificadores de comandos.
Tres de estos se implementan en CFrameWnd::OnUpdateKeyIndicator, un ayudante de aplicación que utiliza el identificador de comando para asignar a la tecla Virtual adecuada. Una implementación común activa o desactiva (paneles de estado desactivado no = ningún texto) el objeto CCmdUI dependiendo de si la tecla Virtual adecuada está actualmente bloqueada.
No se recomienda la personalización de este controlador de comandos.
Actualmente no hay ninguna implementación estándar para estos indicadores.
Si desea aplicar estos indicadores, recomendamos que utilice estos identificadores de indicador y mantener el orden de los indicadores en la barra de Estado (es decir, en este orden: EXT, CAP, NUM, SCRL, sob, REC).
&Notas técnicas por número |nbsp; Notas técnicas por categoría