Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo agregar un botón de barra de herramientas que contiene un control de Windows a una barra de herramientas. En MFC, un botón de barra de herramientas debe ser una CMFCToolBarButton
clase derivada de clase, por ejemplo CMFCToolBarComboBoxButton
Clase, CMFCToolBarEditBoxButton
Clase, CMFCDropDownToolbarButton
Clase o CMFCToolBarMenuButton
Clase.
Agregar controles a barras de herramientas
Para agregar un control a una barra de herramientas, siga estos pasos:
Reserve un identificador de recurso ficticio para el botón del recurso primario de la barra de herramientas. Para obtener más información sobre cómo crear botones mediante el Editor de barras de herramientas en Visual Studio, consulte el artículo Editor de barras de herramientas .
Reserve una imagen de barra de herramientas (icono de botón) para el botón en todos los mapas de bits de la barra de herramientas primaria.
En el controlador de mensajes que procesa el
AFX_WM_RESETTOOLBAR
mensaje, realice los pasos siguientes:Construya el control de botón mediante una
CMFCToolbarButton
clase derivada de .Reemplace el botón ficticio por el nuevo control mediante
CMFCToolBar::ReplaceButton
. Puede construir el objeto de botón en la pila, ya queReplaceButton
copia el objeto de botón y mantiene la copia.
Nota:
Si ha habilitado la personalización en la aplicación, es posible que tenga que restablecer la barra de herramientas mediante el botón Restablecer de la pestaña Barras de herramientas del cuadro de diálogo Personalizar para ver el control actualizado en la aplicación después de volver a compilar. El estado de la barra de herramientas se guarda en el Registro de Windows y la información del Registro se carga y se aplica después de ejecutar el método durante el inicio de la ReplaceButton
aplicación.
Controles de barra de herramientas y personalización
La pestaña Comandos del cuadro de diálogo Personalizar contiene una lista de comandos que están disponibles en la aplicación. De forma predeterminada, el cuadro de diálogo Personalizar procesa los menús de la aplicación y crea una lista de botones de barra de herramientas estándar en cada categoría de menú. Para mantener la funcionalidad extendida que proporcionan los controles de la barra de herramientas, debe reemplazar el botón de barra de herramientas estándar por el control personalizado en el cuadro de diálogo Personalizar .
Al habilitar la personalización, se crea el cuadro de diálogo Personalizar en el controlador OnViewCustomize
de personalización mediante la CMFCToolBarsCustomizeDialog
clase Class . Antes de mostrar el cuadro de diálogo Personalizar llamando CMFCToolBarsCustomizeDialog::Create
a , llame CMFCToolBarsCustomizeDialog::ReplaceButton
a para reemplazar el botón estándar por el nuevo control.
Ejemplo: Crear un cuadro combinado buscar
En esta sección se describe cómo crear un control buscar cuadro combinado que aparece en una barra de herramientas y contiene cadenas de búsqueda usadas recientemente. El usuario puede escribir una cadena en el control y, a continuación, presionar la tecla ENTRAR para buscar en un documento o presionar la tecla de escape para devolver el foco al marco principal. En este ejemplo se supone que el documento se muestra en una vista derivada de claseCEditView
.
Crear el control De búsqueda
En primer lugar, cree el control Buscar cuadro combinado:
Agregue el botón y sus comandos a los recursos de la aplicación:
En los recursos de la aplicación, agregue un nuevo botón con un
ID_EDIT_FIND
identificador de comando a una barra de herramientas de la aplicación y a los mapas de bits asociados a la barra de herramientas.Cree un nuevo elemento de menú con el identificador de
ID_EDIT_FIND
comando.Agregue una nueva cadena a la tabla de
"Find the text\nFind"
cadenas y asígnele unID_EDIT_FIND_COMBO
identificador de comando. Este identificador se usará como identificador de comando del botón Buscar cuadro combinado.Nota:
Dado
ID_EDIT_FIND
que es un comando estándar procesado porCEditView
, no es necesario implementar un controlador especial para este comando. Sin embargo, debe implementar un controlador para el nuevo comandoID_EDIT_FIND_COMBO
.
Cree una nueva clase,
CFindComboBox
, derivada deCComboBox
Class.En la
CFindComboBox
clase , invalide elPreTranslateMessage
método virtual. Este método habilitará el cuadro combinado para procesar elWM_KEYDOWN
mensaje. Si el usuario alcanza la tecla de escape (VK_ESCAPE
), devuelva el foco a la ventana principal del marco. Si el usuario alcanza la tecla Entrar (VK_ENTER
), publique en la ventana de marco principal unWM_COMMAND
mensaje que contenga el identificador deID_EDIT_FIND_COMBO
comando.Cree una clase para el botón Buscar cuadro combinado, derivado de
CMFCToolBarComboBoxButton
Clase. En este ejemplo, se denominaCFindComboButton
.El constructor de
CMFCToolbarComboBoxButton
toma tres parámetros: el identificador de comando del botón, el índice de imagen del botón y el estilo del cuadro combinado. Establezca estos parámetros de la siguiente manera:Pase como
ID_EDIT_FIND_COMBO
identificador de comando.Use
CCommandManager::GetCmdImage
conID_EDIT_FIND
para obtener el índice de imagen.Para obtener una lista de los estilos de cuadro combinado disponibles, consulte Combo-Box Estilos.
En la
CFindComboButton
clase , invalide elCMFCToolbarComboBoxButton::CreateCombo
método . Aquí debe crear elCFindComboButton
objeto y devolverle un puntero.Use la
IMPLEMENT_SERIAL
macro para que el botón combinado sea persistente. El administrador del área de trabajo carga y guarda automáticamente el estado del botón en el Registro de Windows.Implemente el controlador en la
ID_EDIT_FIND_COMBO
vista de documento. UseCMFCToolBar::GetCommandButtons
conID_EDIT_FIND_COMBO
para recuperar todos los botones del cuadro combinado Buscar . Puede haber varias copias de un botón con el mismo identificador de comando debido a la personalización.En el controlador
OnFind
deID_EDIT_FIND
mensajes , useCMFCToolBar::IsLastCommandFromButton
para determinar si el comando find se envió desde el botón Buscar cuadro combinado. Si es así, busque el texto y agregue la cadena de búsqueda al cuadro combinado.
Agregar el control Buscar a la barra de herramientas principal
Para agregar el botón cuadro combinado a la barra de herramientas, siga estos pasos:
Implemente el controlador
OnToolbarReset
deAFX_WM_RESETTOOLBAR
mensajes en la ventana principal del marco.Nota:
El marco envía este mensaje a la ventana de marco principal cuando se inicializa una barra de herramientas durante el inicio de la aplicación o cuando se restablece una barra de herramientas durante la personalización. En cualquier caso, debe reemplazar el botón de barra de herramientas estándar por el botón de cuadro combinado Buscar personalizado.
En el
AFX_WM_RESETTOOLBAR
controlador, examine el identificador de la barra de herramientas, es decir, elWPARAM
AFX_WM_RESETTOOLBAR
del mensaje. Si el identificador de la barra de herramientas es igual al de la barra de herramientas que contiene el botón Buscar cuadro combinado, llameCMFCToolBar::ReplaceButton
a para reemplazar el botón Buscar (es decir, el botón por el identificadorID_EDIT_FIND
de comando ) por unCFindComboButton
objeto .Nota:
Puede construir un
CFindComboBox
objeto en la pila, ya queReplaceButton
copia el objeto de botón y mantiene la copia.
Agregar el control Buscar al cuadro de diálogo Personalizar
En el controlador OnViewCustomize
de personalización , llame CMFCToolBarsCustomizeDialog::ReplaceButton
a para reemplazar el botón Buscar (es decir, el botón por el identificador ID_EDIT_FIND
de comando ) por un CFindComboButton
objeto .
Consulte también
Gráfico de jerarquías
Clases
CMFCToolBar
(clase)
CMFCToolBarButton
(clase)
CMFCToolBarComboBoxButton
(clase)
CMFCToolBarsCustomizeDialog
(clase)