Fundamentos de las barras de herramientas
En este artículo se describe la implementación fundamental de MFC que permite agregar una barra de herramientas predeterminada a la aplicación al seleccionar una opción en el Asistente para aplicaciones. Temas cubiertos:
Opción de la barra de herramientas del Asistente para aplicaciones
Para obtener una sola barra de herramientas con botones predeterminados, seleccione la opción de barra de herramientas Acoplamiento estándar en la página con la etiqueta Características de la interfaz de usuario. Esto agrega código a la aplicación que:
Crea el objeto de barra de herramientas.
Administra la barra de herramientas, incluida su capacidad de acoplar o flotar.
Barra de herramientas en el código
La barra de herramientas es un objeto CToolBar declarado como miembro de datos de la clase CMainFrame
de la aplicación. En otras palabras, el objeto de barra de herramientas se incrusta en el objeto de ventana de marco principal. Esto significa que MFC crea la barra de herramientas cuando crea la ventana de marco y destruye la barra de herramientas cuando destruye la ventana de marco. En la siguiente declaración de clase parcial, para una aplicación de interfaz de documento múltiple (MDI), se muestran los miembros de datos de una barra de herramientas incrustada y una barra de estado incrustada. También muestra la invalidación de la función miembro OnCreate
.
class CMainFrame : public CMDIFrameWnd
{
// Implementation
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
La creación de la barra de herramientas se produce en CMainFrame::OnCreate
. MFC llama a OnCreate después de crear la ventana para el marco, pero antes de que sea visible. El valor predeterminado OnCreate
que genera el Asistente para aplicaciones lleva a cabo las siguientes tareas de la barra de herramientas:
Llama a la
CToolBar
función miembro Create del objeto para crear el objeto CToolBarCtrl subyacente.Llama a LoadToolBar para cargar la información del recurso de la barra de herramientas.
Llama a funciones para habilitar la acoplamiento, el flotante y las sugerencias de herramientas. Para obtener más información sobre estas llamadas, consulte el artículo Acoplamiento y barras de herramientas flotantes.
Nota:
El ejemplo general de MFC DOCKTOOL incluye ilustraciones de barras de herramientas MFC antiguas y nuevas. Las barras de herramientas que usan COldToolbar
requieren llamadas en el paso 2 a LoadBitmap
(en lugar de LoadToolBar
) y a SetButtons
. Las nuevas barras de herramientas requieren llamadas a LoadToolBar
.
Las llamadas de sugerencias de herramientas, flotantes y acoplamiento son opcionales. Puede quitar esas líneas de OnCreate
si lo prefiere. El resultado es una barra de herramientas que permanece fija, no puede flotar o reacoplar y no puede mostrar sugerencias de herramientas.
Edición del recurso de la barra de herramientas
La barra de herramientas predeterminada que se obtiene con el Asistente para aplicaciones se basa en un recurso personalizado de RT_TOOLBAR introducido en la versión 4.0 de MFC. Puede editar este recurso con el editor de la barra de herramientas. El editor le permite agregar, eliminar y reorganizar botones con facilidad. Contiene un editor gráfico para los botones que son muy similares al editor de gráficos generales de Visual C++. Si editó barras de herramientas en versiones anteriores de Visual C++, encontrará la tarea de forma mucho más fácil.
Para conectar un botón de barra de herramientas a un comando, asigne al botón un identificador de comando, como ID_MYCOMMAND
. Especifique el id. de comando en la página de propiedades del botón en el editor de la barra de herramientas. A continuación, cree una función de controlador para el comando (consulte Asignación de mensajes a funciones para obtener más información).
Las nuevas funciones miembro de CToolBar funcionan con el recurso RT_TOOLBAR. LoadToolBar ahora toma el lugar de LoadBitmap para cargar el mapa de bits de las imágenes de botón de la barra de herramientas y SetButtons para establecer los estilos de botón y conectar botones con imágenes de mapa de bits.
Para obtener más información sobre el uso del editor de la barra de herramientas, consulte Editor de barras de herramientas.
Varias barras de herramientas
El Asistente para aplicaciones proporciona una barra de herramientas predeterminada. Si necesita más de una barra de herramientas en la aplicación, puede modelar el código para barras de herramientas adicionales en función del código que genere el asistente para la barra de herramientas predeterminada.
Si quiere mostrar una barra de herramientas como resultado de un comando, deberá hacer lo siguiente:
Cree un nuevo recurso de barra de herramientas con el editor de la barra de herramientas y cárguelo con
OnCreate
la función miembro LoadToolbar.Inserte un nuevo objeto CToolBar en la clase principal de ventana de marco.
Haga las llamadas de función adecuadas en
OnCreate
para acoplar o flotar la barra de herramientas, establecer sus estilos y más.
Qué más quieres saber
Clases CToolBar y CToolBarCtrl