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.
La biblioteca microsoft Foundation Class admite barras de herramientas acoplables. Una barra de herramientas acoplable se puede adjuntar, o acoplar, a cualquier lado de su ventana primaria, o puede desasociarse o flotar en su propia ventana minimarco. En este artículo se explica cómo usar barras de herramientas acoplables en las aplicaciones.
Si usa el Asistente para aplicaciones para generar el esqueleto de la aplicación, se le pedirá que elija si desea barras de herramientas acoplables. De forma predeterminada, el Asistente para aplicaciones genera el código que realiza las tres acciones necesarias para colocar una barra de herramientas acoplable en la aplicación:
Si falta alguno de estos pasos, la aplicación mostrará una barra de herramientas estándar. Los dos últimos pasos deben realizarse para cada barra de herramientas acoplable de la aplicación.
Otros temas tratados en este artículo incluyen:
Consulte el ejemplo general de MFC DOCKTOOL para obtener ejemplos.
Habilitación del acoplamiento en una ventana de marco
Para acoplar barras de herramientas a una ventana de marco, la ventana de marco (o destino) debe estar habilitada para permitir el acoplamiento. Esto se hace mediante la función CFrameWnd::EnableDocking , que toma un parámetro DWORD que es un conjunto de bits de estilo que indica qué lado de la ventana de marco acepta acoplamiento. Si una barra de herramientas está a punto de acoplarse y hay varios lados a los que se puede acoplar, los lados indicados en el parámetro pasado a EnableDocking
se usan en el orden siguiente: superior, inferior, izquierdo, derecho. Si desea poder acoplar barras de control en cualquier lugar, pase CBRS_ALIGN_ANY a EnableDocking
.
Habilitación del acoplamiento de una barra de herramientas
Una vez que haya preparado el destino para acoplar, debe preparar la barra de herramientas (o el origen) de forma similar. Llame a CControlBar::EnableDocking para cada barra de herramientas que quiera acoplar, especificando los lados de destino a los que debe acoplarse la barra de herramientas. Si ninguno de los lados especificados en la llamada a CControlBar::EnableDocking
coincide con los lados habilitados para acoplarse en la ventana del marco, la barra de herramientas no podrá acoplarse y flotará. Una vez que se ha flotado, permanece como una barra de herramientas flotante y no se puede acoplar a la ventana del marco.
Si el efecto que desea es una barra de herramientas flotante permanentemente, llame a EnableDocking
con un parámetro de 0. A continuación, llame a CFrameWnd::FloatControlBar. La barra de herramientas permanece flotante, permanentemente no se puede acoplar en ningún lugar.
Acoplamiento de la barra de herramientas
El marco llama a CFrameWnd::DockControlBar cuando el usuario intenta colocar la barra de herramientas en un lado de la ventana de marco que permita acoplar.
Además, puede llamar a esta función en cualquier momento para acoplar barras de control a la ventana de marco. Normalmente, esto se hace durante la inicialización. Se puede acoplar más de una barra de herramientas a un lado determinado de la ventana de marco.
Barra de herramientas flotante
Al desasociar una barra de herramientas acoplable de la ventana de marco se hace flotante la barra de herramientas. Llame a CFrameWnd::FloatControlBar para hacerlo. Especifique la barra de herramientas que se va a flotar, el punto donde se debe colocar y un estilo de alineación que determine si la barra de herramientas flotante es horizontal o vertical.
El marco llama a esta función cuando un usuario arrastra una barra de herramientas fuera de su ubicación acoplada y la coloca en una ubicación donde el acoplamiento no está habilitado. Esto puede estar en cualquier parte dentro o fuera del marco de la ventana. Al igual que con DockControlBar
, también puede llamar a esta función durante la inicialización.
La implementación de MFC de barras de herramientas acoplables no proporciona algunas de las características extendidas que se encuentran en algunas aplicaciones que admiten barras de herramientas acoplables. No se proporcionan características como barras de herramientas personalizables.
Redimensionado dinámico de la barra de herramientas
A partir de la versión 4.0 de Visual C++, puede hacer posible que los usuarios de la aplicación cambien el tamaño de las barras de herramientas flotantes de forma dinámica. Normalmente, una barra de herramientas tiene una forma larga y lineal, mostrada horizontalmente. Pero puede cambiar la orientación de la barra de herramientas y su forma. Por ejemplo, cuando el usuario acopla una barra de herramientas en uno de los lados verticales de la ventana de marco, la forma cambia a un diseño vertical. También es posible cambiar la forma de la barra de herramientas en un rectángulo con varias filas de botones.
Ustedes pueden:
Especifique el ajuste de tamaño dinámico como una característica de la barra de herramientas.
Especifique el ajuste de tamaño fijo como una característica de la barra de herramientas.
Para proporcionar este soporte, hay dos nuevos estilos de barra de herramientas para usar en sus llamadas a la función miembro CToolBar::Create. Son las siguientes:
CBRS_SIZE_DYNAMIC La barra de control es dinámica.
CBRS_SIZE_FIXED La barra de control es fija.
El estilo dinámico de tamaño permite al usuario cambiar el tamaño de la barra de herramientas mientras está flotante, pero no mientras está acoplado. La barra de herramientas "se ajusta" cuando es necesario cambiar la forma a medida que el usuario arrastra sus bordes.
El estilo de tamaño fijo conserva los estados de ajuste de una barra de herramientas, fijando la posición de los botones en cada columna. El usuario de la aplicación no puede cambiar la forma de la barra de herramientas. La barra de herramientas se ajusta en lugares designados, como las ubicaciones de los separadores entre los botones. Mantiene esta forma si la barra de herramientas está acoplada o flotante. El efecto es una paleta fija con varias columnas de botones.
También puede usar CToolBar::GetButtonStyle para devolver un estado y un estilo para los botones de las barras de herramientas. El estilo de un botón determina cómo aparece el botón y cómo responde a la entrada del usuario; el estado indica si el botón está en un estado ajustado.
Establecer posiciones de ajuste en una barra de herramientas de estilo fijo
Para una barra de herramientas con estilo de tamaño fijo, designe los índices del botón de la barra de herramientas en los que se ajustará la barra de herramientas. En el código siguiente se muestra cómo hacerlo en la invalidación OnCreate
de la ventana de marco principal:
// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);
// Do the same for other wrap locations ...
// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
// Call docking/floating functions as needed ...
En el ejemplo general de MFC DOCKTOOL se muestra cómo usar funciones miembro de las clases CControlBar y CToolBar para administrar el diseño dinámico de una barra de herramientas. Consulte el archivo EDITBAR. CPP en DOCKTOOL.