Compartir a través de


TN022: Implementación de comandos estándar

Nota:

La nota técnica siguiente no se ha actualizado desde que se incluyó por primera vez en la documentación en línea. Como resultado, algunos procedimientos y temas podrían estar obsoletos o incorrectos. Para obtener la información más reciente, se recomienda buscar el tema de interés en el índice de documentación en línea.

En esta nota se describen las implementaciones de comandos estándar proporcionadas por MFC 2.0. Lea primero la nota técnica 21 porque describe los mecanismos que se usan para implementar muchos de los comandos estándar.

En esta descripción se da por supuesto el conocimiento de las arquitecturas, LAS API y la práctica de programación común de MFC. Se describen las API "solo de implementación" documentadas y no documentadas. Este no es un lugar para empezar a aprender sobre las características de o cómo programar en MFC. Consulte Visual C++ para obtener más información general y para obtener más información sobre las API documentadas.

El problema

MFC define muchos identificadores de comando estándar en el archivo de encabezado AFXRES.H. La compatibilidad de framework con estos comandos varía. Comprender dónde y cómo controlan las clases de marco estos comandos no solo le mostrará cómo funciona el marco internamente, sino que proporcionará información útil sobre cómo personalizar las implementaciones estándar y le enseñará algunas técnicas para implementar sus propios controladores de comandos.

Contenido de esta nota técnica

Cada identificador de comando se describe en dos secciones:

  • Título: el nombre simbólico del identificador de comando (por ejemplo, ID_FILE_SAVE) seguido del propósito del comando (por ejemplo, "guarda el documento actual") separado por dos puntos.

  • Uno o varios párrafos que describen las clases que implementan el comando y lo que hace la implementación predeterminada

La mayoría de las implementaciones de comandos predeterminadas están preconfiguradas en el mapa de mensajes de la clase base del marco. Hay algunas implementaciones de comandos que requieren cableado explícito en la clase derivada. Estos se describen en "Nota". Si elige las opciones adecuadas en AppWizard, estos controladores predeterminados se conectarán automáticamente en la aplicación de esqueleto generada.

Convención de nomenclatura

Los comandos estándar siguen una convención de nomenclatura sencilla que se recomienda usar si es posible. La mayoría de los comandos estándar se encuentran en lugares estándar en la barra de menús de una aplicación. El nombre simbólico del comando comienza por "ID_" seguido del nombre del menú emergente estándar, seguido del nombre del elemento de menú. El nombre simbólico está en mayúsculas con caracteres de subrayado para separar las palabras. Para los comandos que no tienen nombres de elemento de menú estándar, se define un nombre de comando lógico a partir de "ID_" (por ejemplo, ID_NEXT_PANE).

Usamos el prefijo "ID_" para indicar comandos diseñados para enlazarse a elementos de menú, botones de barra de herramientas u otros objetos de interfaz de usuario de comandos. Los controladores de comandos que controlan los comandos "ID_" deben usar los mecanismos de ON_COMMAND y ON_UPDATE_COMMAND_UI de la arquitectura de comandos de MFC.

Se recomienda usar el prefijo estándar "IDM_" para los elementos de menú que no siguen la arquitectura de comandos y necesitan código específico del menú para habilitarlos y deshabilitarlos. Por supuesto, el número de comandos específicos del menú debe ser pequeño, ya que seguir la arquitectura de comandos de MFC no solo hace que los controladores de comandos sean más eficaces (ya que funcionarán con barras de herramientas), sino que hace que el código del controlador de comandos sea reutilizable.

Intervalos de identificadores

Consulte la Nota técnica 20 para obtener más información sobre el uso de intervalos de identificadores en MFC.

Los comandos estándar de MFC se encuentran en el intervalo 0xE000 a 0xEFFF. No confíe en los valores específicos de estos identificadores, ya que están sujetos a cambios en versiones futuras de la biblioteca.

La aplicación debe definir sus comandos en el intervalo 0x8000 para 0xDFFF.

Identificadores de comando estándar

Para cada identificador de comando, hay una cadena de símbolo de la línea de mensajes estándar que se puede encontrar en el archivo PROMPTS.RC. El identificador de cadena de ese mensaje del menú debe ser el mismo que el del identificador de comando.

  • ID_FILE_NEW Crea un documento nuevo o vacío.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    CWinApp::OnFileNew implementa este comando de forma diferente en función del número de plantillas de documento de la aplicación. Si solo hay un CDocTemplate, CWinApp::OnFileNew creará un nuevo documento de ese tipo, así como la clase de marco y vista adecuadas.

    Si hay más de un CDocTemplate, CWinApp::OnFileNew solicitará al usuario un cuadro de diálogo (AFX_IDD_NEWTYPEDLG) que les permitirá seleccionar qué tipo de documento usar. La opción seleccionada CDocTemplate se usa para crear el documento.

    Una personalización común de ID_FILE_NEW es ofrecer una selección de tipos de documento más variada y visual. En este caso, puede implementar su propio CMyApp::OnFileNew y colocarlo en el mapa de mensajes 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 independiente para crear un documento de cada tipo. En este caso, debe definir nuevos identificadores de comando, por ejemplo, ID_FILE_NEW_CHART y ID_FILE_NEW_SHEET.

  • ID_FILE_OPEN Abre un documento existente.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    CWinApp::OnFileOpen tiene una implementación muy sencilla de llamar CWinApp::DoPromptFileName seguida de CWinApp::OpenDocumentFile con el archivo o el nombre de ruta de acceso del archivo que se va a abrir. La CWinApp rutina DoPromptFileName de implementación abre el cuadro de diálogo FileOpen estándar y lo rellena con las extensiones de archivo obtenidas de las plantillas de documento actuales.

    Una personalización común de ID_FILE_OPEN es personalizar el cuadro de diálogo ArchivoAbrir o agregar filtros de archivo adicionales. La manera recomendada de personalizar esto es reemplazar la implementación predeterminada por su propio cuadro de diálogo FileOpen y llamar a CWinApp::OpenDocumentFile con el nombre del archivo o la ruta de acceso del documento. No es necesario invocar a la clase base.

  • ID_FILE_CLOSE Cierra el documento abierto actualmente.

    CDocument::OnFileClose llama CDocument::SaveModified a para pedir al usuario que guarde el documento si se ha modificado y, a continuación, llama a OnCloseDocument. Toda la lógica de cierre, incluida la destrucción del documento, se realiza en la OnCloseDocument rutina.

    Nota:

    ID_FILE_CLOSE actúa de forma diferente a un mensaje de WM_CLOSE o un comando del sistema de SC_CLOSE enviado a la ventana de marco de documentos. Al cerrar una ventana, solo se cerrará el documento si es la última ventana de marco que muestra el documento. Cerrar el documento con ID_FILE_CLOSE no solo cerrará el documento, sino que cerrará todas las ventanas de marco que muestren el documento.

  • ID_FILE_SAVE Guarda el documento actual.

    La implementación usa una rutina auxiliar CDocument::DoSave que se utiliza tanto para OnFileSave como para OnFileSaveAs. Si guarda un documento que no se ha guardado antes (es decir, no tiene un nombre de ruta de acceso, como en el caso de FileNew) o que se leyó desde un documento de solo lectura, la OnFileSave lógica actuará como el comando ID_FILE_SAVE_AS y pedirá al usuario que proporcione un nuevo nombre de archivo. El proceso real de abrir el archivo y realizar el guardado se realiza a través de la función OnSaveDocumentvirtual .

    Hay dos razones comunes para personalizar ID_FILE_SAVE. En el caso de los documentos que no se guardan, simplemente quite los elementos de menú ID_FILE_SAVE y los botones de la barra de herramientas de la interfaz de usuario. Asegúrese también de que nunca se modifique el documento (es decir, que no se llama nunca a CDocument::SetModifiedFlag) y el marco nunca hará que el documento se guarde. Para los documentos que se guardan en algún lugar distinto de un archivo de disco, defina un nuevo comando para esa operación.

    En el caso de , COleServerDocse usa ID_FILE_SAVE para guardar archivos (para documentos normales) y para la actualización de archivos (para documentos incrustados).

    Si los datos del documento se almacenan en archivos de disco individuales, pero no desea usar la implementación de serialización predeterminada CDocument , debe invalidar CDocument::OnSaveDocument en lugar de OnFileSave.

  • ID_FILE_SAVE_AS Guarda el documento actual bajo un nombre de archivo diferente.

    La CDocument::OnFileSaveAs implementación usa la misma CDocument::DoSave rutina auxiliar que OnFileSave. El OnFileSaveAs comando se controla 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 de servidor que representa un objeto OLE incrustado en alguna otra aplicación como un archivo independiente.

    Si personaliza la lógica de ID_FILE_SAVE, es probable que quiera personalizar ID_FILE_SAVE_AS de forma similar o que la operación de "Guardar como" no se aplique al documento. Puede quitar el elemento de menú de la barra de menús si no es necesario.

  • ID_FILE_SAVE_COPY_AS Guarda una copia del documento actual con un nuevo nombre.

    La COleServerDoc::OnFileSaveCopyAs implementación es muy similar a CDocument::OnFileSaveAs, salvo que el objeto de documento no está "adjunto" al archivo subyacente después del guardado. Es decir, si el documento en memoria se "modificó" antes de guardar, sigue siendo "modificado". Además, este comando no tiene ningún efecto en el nombre de la ruta de acceso o el título almacenados en el documento.

  • ID_FILE_UPDATE notifica al contenedor que guarde un documento incrustado.

    La COleServerDoc::OnUpdateDocument implementación simplemente notifica al contenedor que se debe guardar la inserción. A continuación, el contenedor llama a las API OLE adecuadas para guardar el objeto incrustado.

  • ID_FILE_PAGE_SETUP Invoca un cuadro de diálogo de configuración o diseño de página específico de la aplicación.

    Actualmente no hay 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, se recomienda usar este identificador de comando.

  • ID_FILE_PRINT_SETUP Invocar el cuadro de diálogo de configuración de impresión estándar.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada 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 y la configuración de impresión para al menos este documento o como máximo todos los documentos de esta aplicación. Debe usar el Panel de control para cambiar la configuración predeterminada de la impresora para todo el sistema.

    CWinApp::OnFilePrintSetup tiene una implementación muy sencilla que crea un CPrintDialog objeto y llama a la CWinApp::DoPrintDialog función de implementación. Esto establece la configuración predeterminada de la impresora de la aplicación.

    La necesidad habitual de personalizar este comando es permitir la configuración de impresora por documento, que se debe almacenar con el documento cuando se guarda. Para ello, debe agregar un controlador de mapa de mensajes en la CDocument clase que crea un CPrintDialog objeto, lo inicializa con los atributos de impresora adecuados (normalmente hDevMode y hDevNames), llama a CPrintDialog::DoModaly guarda la configuración de la impresora modificada. Para una implementación sólida, debe examinar la implementación de CWinApp::DoPrintDialog para detectar errores y CWinApp::UpdatePrinterSelection para gestionar valores predeterminados sensibles y seguir los cambios de impresora en todo el sistema.

  • ID_FILE_PRINT impresión estándar del documento actual

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CView derivada para habilitar esta funcionalidad.

    Este comando imprime el documento actual, o más correctamente, inicia el proceso de impresión, lo que implica invocar el cuadro de diálogo de impresión estándar y ejecutar el motor de impresión.

    CView::OnFilePrint implementa este comando y el bucle de impresión principal. Llama al elemento virtual CView::OnPreparePrinting para mostrar al usuario el cuadro de diálogo de impresión. A continuación, prepara el DC de salida para ir a la impresora, abre el cuadro de diálogo de progreso de impresión (AFX_IDD_PRINTDLG) y envía el valor de escape StartDoc a la impresora. CView::OnFilePrint también contiene el bucle de impresión orientado a la página principal. Para cada página, llama al elemento virtual CView::OnPrepareDC seguido de un valor de escape StartPage y llama al elemento virtual CView::OnPrint de esa página. Cuando finaliza, se llama al elemento virtual CView::OnEndPrinting y se cierra el cuadro de diálogo de progreso de impresión.

    La arquitectura de impresión de MFC está diseñada para enlazarse de muchas maneras diferentes para la impresión y la vista previa de impresión. Normalmente, encontrará las distintas funciones reemplazables CView adecuadas para cualquier tarea de impresión orientada a páginas. Solo debe encontrarse con la necesidad de reemplazar la implementación de ID_FILE_PRINT en el caso de una aplicación que usa la impresora para una salida no orientada a páginas.

  • ID_FILE_PRINT_PREVIEW Escriba el modo de vista previa de impresión del documento actual.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CView derivada para habilitar esta funcionalidad.

    CView::OnFilePrintPreview inicia el modo de vista previa de impresión llamando a la función CView::DoPrintPreviewauxiliar documentada . CView::DoPrintPreview es el motor principal del bucle de vista previa de impresión, al igual que OnFilePrint, que es el motor principal del bucle de impresión.

    La operación de vista previa de impresión se puede personalizar de varias maneras pasando parámetros diferentes a DoPrintPreview. Consulte la Nota técnica 30, que describe algunos de los detalles de la vista previa de impresión y cómo personalizarlo.

  • ID_FILE_MRU_FILE1... FILE16 Intervalo de identificadores de comandos para la lista de MRU de archivos.

    CWinApp::OnUpdateRecentFileMenu es un controlador de interfaz de usuario para comandos de actualización, que representa uno de los usos más avanzados del mecanismo ON_UPDATE_COMMAND_UI. En el recurso de menú, solo necesita definir un único elemento de menú con ID ID_FILE_MRU_FILE1. Ese elemento de menú permanece deshabilitado inicialmente.

    A medida que crece la lista de MRU, se agregan más elementos de menú a la lista. La implementación estándar CWinApp tiene como valor predeterminado el límite estándar de los cuatro archivos usados más recientemente. Puede cambiar el valor predeterminado llamando CWinApp::LoadStdProfileSettings a con un valor mayor o menor. La lista de MRU se almacena en el archivo .INI de la aplicación. La lista se carga en la función InitInstance de la aplicación si llama a LoadStdProfileSettings y se guarda cuando se cierra la aplicación. El manipulador de interfaz de usuario del comando de actualización de MRU también convertirá rutas de acceso absolutas en 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 obtiene el nombre de archivo de la lista mrU y llama a CWinApp::OpenDocumentFile, que realiza todo el trabajo de abrir el archivo y actualizar la lista de MRU.

    No se recomienda personalizar este controlador de comandos.

  • ID_EDIT_CLEAR Borra la selección actual

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    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, se recomienda usar este identificador de comando.

  • ID_EDIT_CLEAR_ALL Borra todo el documento.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    Si decide implementar este comando, se recomienda usar este identificador de comando. Consulte el ejemplo del tutorial de MFC SCRIBBLE para obtener una implementación de ejemplo.

  • ID_EDIT_COPY Copia la selección actual en el Portapapeles.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando, que copia el texto seleccionado actualmente 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, se recomienda usar este identificador de comando.

  • ID_EDIT_CUT Corta la selección actual en el Portapapeles.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando, que recorta el texto que haya sido seleccionado y lo lleva al portapapeles como CF_TEXT mediante CEdit::Cut. El comando está deshabilitado si no hay ninguna selección actual.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_FIND Comienza la operación de búsqueda, abre el cuadro de diálogo de búsqueda sin modo.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando, que llama a la función OnEditFindReplace auxiliar de implementación para usar y almacenar la configuración de búsqueda y reemplazo anterior en variables de implementación privadas. La clase CFindReplaceDialog se usa para administrar el cuadro de diálogo sin modo que se va a mostrar al usuario.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_PASTE Inserta el contenido actual del Portapapeles.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando, que copia los datos actuales del Portapapeles reemplazando el texto seleccionado mediante CEdit::Paste. El comando está deshabilitado si no hay CF_TEXT en el Portapapeles.

    COleClientDoc solo proporciona un manejador de interfaz de usuario de comando de actualización para este comando. Si el Portapapeles no contiene un elemento o objeto OLE incrustable, el comando se deshabilitará. Es responsable de escribir el manipulador para que el comando real lleve a cabo el pegado real. Si la aplicación OLE también puede pegar otros formatos, debe proporcionar su propio manipulador de interfaz de usuario de comando de actualización en la vista o el documento (es decir, en algún lugar antes de COleClientDoc en el enrutamiento de destino del comando).

    Si decide implementar este comando, se recomienda usar este identificador de comando.

    Para reemplazar la implementación OLE estándar, use COleClientItem::CanPaste.

  • ID_EDIT_PASTE_LINK Inserta un vínculo a partir del contenido actual del Portapapeles.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    COleDocument solo proporciona un manejador de interfaz de usuario de comando de actualización para este comando. Si el Portapapeles no contiene un elemento o objeto OLE vinculable, el comando se deshabilitará. Es responsable de escribir el manipulador para que el comando real lleve a cabo el pegado real. Si la aplicación OLE también puede pegar otros formatos, debe proporcionar su propio manipulador de interfaz de usuario de comando de actualización en la vista o el documento (es decir, en algún lugar antes de COleDocument en el enrutamiento de destino del comando).

    Si decide implementar este comando, se recomienda usar este identificador de comando.

    Para reemplazar la implementación OLE estándar, use COleClientItem::CanPasteLink.

  • ID_EDIT_PASTE_SPECIAL Inserta el contenido actual del Portapapeles con opciones.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView. MFC no proporciona este cuadro de diálogo.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_REPEAT repite la última operación.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando para repetir la última operación de búsqueda. Se usan las variables de implementación privadas de la última búsqueda. El comando está deshabilitado si no se puede intentar encontrar.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_REPLACE Comienza la operación de sustitución, muestra el cuadro de diálogo Reemplazar sin modo.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando, que llama a la función OnEditFindReplace auxiliar de implementación para usar y almacenar la configuración de búsqueda y reemplazo anterior en variables de implementación privadas. La clase CFindReplaceDialog se usa para administrar el cuadro de diálogo sin modo que se va a mostrar al usuario.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_SELECT_ALL Selecciona todo el documento.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando, que selecciona todo el texto del documento. El comando está deshabilitado si no hay texto que seleccionar.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_UNDO Deshace la última operación.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    CEditView proporciona una implementación de este comando mediante CEdit::Undo. El comando está deshabilitado si CEdit::CanUndo devuelve FALSE.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_EDIT_REDO Rehace la última operación.

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto para cada clase derivada de CView.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_WINDOW_NEW Abre otra ventana del documento activo.

    CMDIFrameWnd::OnWindowNew implementa esta eficaz característica mediante la plantilla de documento del documento actual para crear otro marco que contenga otra vista del documento actual.

    Al igual que la mayoría de los comandos de menú de la interfaz de documento (MDI), el comando está deshabilitado si no hay ninguna ventana secundaria MDI activa.

    No se recomienda personalizar este controlador de comandos. Si desea proporcionar un comando que cree vistas adicionales o ventanas de marco, probablemente será mejor inventar su propio comando. Puede clonar el código de CMDIFrameWnd::OnWindowNew y modificarlo para las clases de marco y vista específicas de su elección.

  • ID_WINDOW_ARRANGE Organiza iconos en la parte inferior de una ventana MDI.

    CMDIFrameWnd implementa este comando MDI estándar en una función OnMDIWindowCmdauxiliar de implementación . Este asistente asigna identificadores de comandos a mensajes de Windows MDI y, por tanto, puede compartir mucho código.

    Al igual que la mayoría de los comandos de menú Ventana de MDI, el comando está deshabilitado si no hay ninguna ventana secundaria MDI activa.

    No se recomienda personalizar este controlador de comandos.

  • ID_WINDOW_CASCADE Muestra en cascada las ventanas para que se superpongan.

    CMDIFrameWnd implementa este comando MDI estándar en una función OnMDIWindowCmdauxiliar de implementación . Este asistente asigna identificadores de comandos a mensajes de Windows MDI y, por tanto, puede compartir mucho código.

    Al igual que la mayoría de los comandos de menú Ventana de MDI, el comando está deshabilitado si no hay ninguna ventana secundaria MDI activa.

    No se recomienda personalizar este controlador de comandos.

  • ID_WINDOW_TILE_HORZ Coloca en mosaico las ventanas horizontalmente.

    Este comando se implementa en CMDIFrameWnd de la misma manera que ID_WINDOW_CASCADE, salvo que se usa un mensaje de Windows MDI diferente para la operación.

    Debe elegir la orientación del icono predeterminada para la aplicación. Para ello, cambie el identificador del elemento de menú "Tile" (Colocar en mosaico) de la ventana a ID_WINDOW_TILE_HORZ o ID_WINDOW_TILE_VERT.

  • ID_WINDOW_TILE_VERT Coloca en mosaico las ventanas verticalmente.

    Este comando se implementa en CMDIFrameWnd de la misma manera que ID_WINDOW_CASCADE, salvo que se usa un mensaje de Windows MDI diferente para la operación.

    Debe elegir la orientación del icono predeterminada para la aplicación. Para ello, cambie el identificador del elemento de menú "Tile" (Colocar en mosaico) de la ventana a ID_WINDOW_TILE_HORZ o ID_WINDOW_TILE_VERT.

  • ID_WINDOW_SPLIT Interfaz de teclado para el separador.

    CView controla este comando para la CSplitterWnd implementación. Si la vista forma parte de una ventana divisora, este comando delegará a la función CSplitterWnd::DoKeyboardSplitde implementación . Esto colocará el divisor en un modo que permitirá que los usuarios del teclado dividan o desactiven una ventana divisora.

    Este comando está deshabilitado si la vista no está en un separador.

    No se recomienda personalizar este controlador de comandos.

  • ID_APP_ABOUT Invoca el cuadro de diálogo Acerca de.

    No hay ninguna implementación estándar para el cuadro Acerca de una aplicación. La aplicación predeterminada creada por AppWizard creará una clase de cuadro de diálogo personalizada para la aplicación y la usará como el cuadro Acerca de. AppWizard también escribirá el controlador de comandos trivial que controla este comando e invoca el cuadro de diálogo.

    Casi siempre implementará este comando.

  • ID_APP_EXIT Salir de la aplicación.

    CWinApp::OnAppExit controla este comando enviando un mensaje WM_CLOSE a la ventana principal de la aplicación. La implementación de CFrameWnd controla el apagado estándar de la aplicación (que realiza solicitudes sobre los archivos modificados, etc.).

    No se recomienda personalizar este controlador de comandos. Se recomienda reemplazar la lógica de cierre de CWinApp::SaveAllModified o CFrameWnd.

    Si decide implementar este comando, se recomienda usar este identificador de comando.

  • ID_HELP_INDEX enumera los temas de ayuda del archivo .HLP.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    CWinApp::OnHelpIndex controla este comando llamando trivialmente a CWinApp::WinHelp.

    No se recomienda personalizar este controlador de comandos.

  • ID_HELP_USING Muestra ayuda sobre cómo usar la Ayuda.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    CWinApp::OnHelpUsing controla este comando llamando trivialmente a CWinApp::WinHelp.

    No se recomienda personalizar este controlador de comandos.

  • ID_CONTEXT_HELP Entra en el modo de ayuda de MAYÚS-F1.

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    CWinApp::OnContextHelp controla este comando estableciendo el cursor del modo de ayuda, escribiendo un bucle modal y esperando a que el usuario seleccione una ventana para obtener ayuda. Consulte la Nota técnica 28 para obtener más información sobre la implementación de la Ayuda de MFC.

    No se recomienda personalizar este controlador de comandos.

  • ID_HELP Proporciona ayuda sobre el contexto actual

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    CWinApp::OnHelp controla este comando obteniendo el contexto de ayuda adecuado para el contexto de la aplicación actual. Esto controla la ayuda de F1 simple, ayuda sobre los cuadros de mensaje, etc. Consulte la Nota técnica 28 para obtener más información sobre la implementación de ayuda de MFC.

    No se recomienda personalizar este controlador de comandos.

  • ID_DEFAULT_HELP Muestra la ayuda predeterminada para el contexto

    Nota:

    Debe conectarlo al mapa de mensajes de su clase CWinApp derivada para habilitar esta funcionalidad.

    Este comando normalmente se asigna a CWinApp::OnHelpIndex.

    Se puede proporcionar un controlador de comandos diferente si se desea una distinción entre la Ayuda predeterminada y el índice de Ayuda.

  • ID_NEXT_PANE Ir al panel siguiente

    CView controla este comando para la CSplitterWnd implementación. Si la vista forma parte de una ventana divisora, este comando delegará a la función CSplitterWnd::OnNextPaneCmdde implementación . Esto moverá la vista activa al siguiente panel del separador.

    Este comando está deshabilitado si la vista no está en un divisor o no hay ningún panel siguiente al que ir.

    No se recomienda personalizar este controlador de comandos.

  • ID_PREV_PANE va al panel anterior

    CView controla este comando para la CSplitterWnd implementación. Si la vista forma parte de una ventana divisora, este comando delegará a la función CSplitterWnd::OnNextPaneCmdde implementación . Esto moverá la vista activa al panel anterior del separador.

    Este comando está deshabilitado si la vista no está en un divisor o no hay ningún panel anterior al que ir.

    No se recomienda personalizar este controlador de comandos.

  • ID_OLE_INSERT_NEW Inserta un nuevo objeto OLE

    Actualmente no hay ninguna implementación estándar para este comando. Debe implementar esto en su clase derivada de CView para insertar un nuevo elemento u objeto OLE en la selección actual.

    Todas las aplicaciones cliente OLE deben implementar este comando. AppWizard, con la opción OLE, creará una implementación maestra de OnInsertObject en la clase de vista que tendrá que completar.

    Consulte el ejemplo OCLIENT de ejemplo ole de MFC para obtener una implementación completa de este comando.

  • ID_OLE_EDIT_LINKS edita vínculos OLE

    COleDocument controla este comando mediante la implementación proporcionada por MFC del cuadro de diálogo vínculos OLE estándar. Se obtiene acceso a la implementación de este cuadro de diálogo a través de la COleLinksDialog clase . Si el documento actual no contiene ningún vínculo, el comando está deshabilitado.

    No se recomienda personalizar este controlador de comandos.

  • ID_OLE_VERB_FIRST...LAST Intervalo de identificadores de los verbos OLE

    COleDocument usa este intervalo de identificadores de comando para los verbos admitidos por el elemento o objeto OLE seleccionado actualmente. Debe ser un intervalo, ya que un tipo de objeto o elemento OLE determinado puede admitir cero o más verbos personalizados. En el menú de la aplicación, debe tener un elemento de menú con el identificador de ID_OLE_VERB_FIRST. Cuando se ejecuta el programa, el menú se actualizará con la descripción del verbo de menú adecuada (o menú emergente con muchos verbos). La gestión del menú OLE se maneja mediante AfxOleSetEditMenu y se lleva a cabo en el controlador de la interfaz de usuario del comando de actualización para este comando.

    No hay controladores de comandos explícitos para controlar cada uno de los identificadores de comando de este intervalo. Se obvia COleDocument::OnCmdMsg para interceptar todos los identificadores de comando en este intervalo, convertirlos en números de verbo de base cero e iniciar el servidor para ese verbo (mediante COleClientItem::DoVerb).

    No se recomienda la personalización u otro uso de este intervalo de identificadores de comando.

  • ID_VIEW_TOOLBAR activa o desactiva la barra de herramientas

    CFrameWnd controla este comando así como el manejador de interfaz de usuario de comando de actualización para conmutar el estado de visibilidad de la barra de herramientas. La barra de herramientas debe ser una ventana secundaria del marco con el identificador de ventana secundario de AFX_IDW_TOOLBAR. El controlador de comandos activa realmente la visibilidad de la ventana de la barra de herramientas. CFrameWnd::RecalcLayout se usa para volver a dibujar la ventana de marco con la barra de herramientas en su nuevo estado. El controlador de interfaz de usuario update-command comprueba el elemento de menú cuando la barra de herramientas está visible.

    No se recomienda personalizar este controlador de comandos. Si desea agregar barras de herramientas adicionales, querrá clonar y modificar el controlador de comandos y el controlador de interfaz de usuario update-command para este comando.

  • ID_VIEW_STATUS_BAR Alterna la barra de estado activada y desactivada

    Este comando se implementa en CFrameWnd igual que ID_VIEW_TOOLBAR, salvo que se usa un identificador de ventana hija diferente (AFX_IDW_STATUS_BAR).

Manipuladores de comando de solo actualización

Varios identificadores de comando estándar se usan como indicadores en las barras de estado. Usan el mismo mecanismo de control de la interfaz de usuario del comando de actualización para mostrar su estado visual actual durante el tiempo de inactividad de la aplicación. Dado que el usuario no puede seleccionarlos (es decir, no se puede insertar un panel de barras de estado), no tiene sentido tener un controlador de ON_COMMAND para estos identificadores de comando.

  • ID_INDICATOR_CAPS: indicador de bloqueo de mayúsculas (CAP).

  • ID_INDICATOR_NUM : indicador de bloqueo NUM.

  • ID_INDICATOR_SCRL: indicador de bloqueo de desplazamiento (SCRL).

  • ID_INDICATOR_KANA : indicador de bloqueo KANA (aplicable solo a los sistemas japoneses).

Los tres se implementan en CFrameWnd::OnUpdateKeyIndicator, un asistente de implementación que usa el identificador de comando para asignarlo a la tecla virtual adecuada. Una implementación común habilita o deshabilita (para los paneles de estado deshabilitados = sin texto) el CCmdUI objeto en función de si la clave virtual adecuada está bloqueada actualmente.

No se recomienda personalizar este controlador de comandos.

  • ID_INDICATOR_EXT: indicador de selección extendida (EXT).

  • ID_INDICATOR_OVR : indicador OVeRstrike.

  • ID_INDICATOR_REC: indicador de grabación (REC).

Actualmente no hay ninguna implementación estándar para estos indicadores.

Si decide implementar estos indicadores, se recomienda usar 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, OVR, REC).

Consulte también

Notas técnicas por número
Notas Técnicas por Categoría