Compartir vía


Acerca de los controles de barra de herramientas

Una barra de herramientas es un control que contiene uno o varios botones. Cada botón, cuando un usuario hace clic en ellos, envía un mensaje de comando a la ventana primaria. Normalmente, los botones de una barra de herramientas corresponden a los elementos del menú de la aplicación, lo que proporciona una manera adicional y más directa de que el usuario acceda a los comandos de una aplicación.

En la captura de pantalla siguiente se muestra una ventana que contiene una barra de herramientas sencilla para las operaciones de archivo. La aplicación ha habilitado estilos visuales. El botón Guardar es "activo" porque el cursor estaba sobre él cuando se tomó la captura de pantalla. La apariencia real del control varía según el sistema operativo y el tema seleccionado por el usuario.

captura de pantalla de una ventana con una barra de herramientas de tres botones; un botón está activo

En la captura de pantalla siguiente se muestra el mismo control en una aplicación que se compiló sin los estilos visuales habilitados.

captura de pantalla de una ventana sin estilos visuales: ninguno de los botones se ve activo

En los temas siguientes se describen las características que se deben tener en cuenta al planear una barra de herramientas. Para obtener información específica sobre la implementación y el código de ejemplo, vea Usar controles de barra de herramientas.

Especificar el tamaño y la posición de la barra de herramientas

Si crea una barra de herramientas mediante CreateToolbarEx, la función le permite especificar en píxeles el alto y el ancho de la barra de herramientas.

Nota

No se recomienda usar CreateToolbarEx , ya que no admite nuevas características de las barras de herramientas, incluidas las listas de imágenes. Para obtener más información sobre cómo crear barras de herramientas, vea Usar controles de barra de herramientas.

 

La función CreateWindowEx no tiene parámetros para especificar el tamaño de la barra de herramientas. El procedimiento de ventana de la barra de herramientas establece automáticamente el tamaño y la posición de la ventana de la barra de herramientas. La altura se basa en la de los botones de la barra de herramientas. La anchura es la misma que la del área cliente de la ventana primaria. Para cambiar la configuración de tamaño automático, envíe un mensaje de TB_SETBUTTONSIZE . Los CCS_TOP y CCS_BOTTOM estilos de control comunes determinan si la barra de herramientas se coloca en la parte superior o inferior del área de cliente. De forma predeterminada, una barra de herramientas tiene el estilo CCS_TOP .

Además, el procedimiento de ventana de la barra de herramientas ajusta automáticamente el tamaño de la barra de herramientas cada vez que recibe un mensaje WM_SIZE o TB_AUTOSIZE . Una aplicación debe enviar cualquiera de estos mensajes siempre que el tamaño de la ventana principal cambie o después de enviar un mensaje que requiera ajustar el tamaño de la barra de herramientas, por ejemplo, un mensaje de TB_SETBUTTONSIZE .

Los comportamientos de ajuste de tamaño y posicionamiento predeterminados de la barra de herramientas se pueden desactivar estableciendo el CCS_NORESIZE y CCS_NOPARENTALIGN estilos de control comunes. Los controles de barra de herramientas hospedados por controles de barra de barras deben establecer estos estilos porque el control de barra de control cambia de tamaño y coloca la barra de herramientas.

Barras de herramientas transparentes

Los controles de barra de herramientas admiten una apariencia transparente que permite que el área cliente debajo de la barra de herramientas se muestre. Hay dos tipos de barras de herramientas transparentes, unas con botones planos y otras con botones tridimensionales. Si desea que la aplicación coincida con la interfaz de Windows, use la barra de herramientas de estilo transparente plana.

En la captura de pantalla siguiente se muestran los dos tipos de barras de herramientas transparentes, no mediante estilos visuales.

captura de pantalla de dos ventanas con diferentes estilos de barras de herramientas, pero ambas barras de herramientas son transparentes

En la captura de pantalla siguiente se muestra una barra de herramientas transparente, ya que puede aparecer en Windows Vista, con estilos visuales habilitados. Se ha cambiado el color de fondo del cuadro de diálogo para que la transparencia sea más obvia.

captura de pantalla de una ventana en Windows Vista con una barra de herramientas transparente

Para crear una barra de herramientas transparente, lo único que debe hacer es agregar TBSTYLE_FLAT o TBSTYLE_TRANSPARENT al parámetro de estilo de ventana de CreateWindowEx. Si no desea que aparezca una línea que indique la parte inferior de la barra de herramientas, no use el estilo de ventana WS_BORDER .

Nota

Al usar estilos visuales, las barras de herramientas pueden ser planas de forma predeterminada.

 

Barras de herramientas de estilo de lista

Los botones de la barra de herramientas permiten mostrar texto y mapas de bits. Los botones de una barra de herramientas creados con el estilo TBSTYLE_LIST colocar texto a la derecha del mapa de bits en lugar de hacerlo.

En la captura de pantalla siguiente se muestra una barra de herramientas con el estilo de lista.

captura de pantalla de una barra de herramientas con texto a la derecha de cada icono

Puede usar el estilo de barra de herramientas TBSTYLE_LIST en combinación con el estilo TBSTYLE_FLAT para crear una barra de herramientas con botones planos.

Definición de imágenes de botón

Hay dos maneras de especificar las imágenes para los botones, por mapas de bits o por listas de imágenes. Una aplicación debe elegir qué método usar. No puede usar ambos métodos con el mismo control de barra de herramientas. Tenga en cuenta que la función CreateToolbarEx usa el método de mapa de bits. Las aplicaciones que quieran usar el método de lista de imágenes deben usar la función CreateWindowEx para crear el control de barra de herramientas.

Definir imágenes de botón mediante mapas de bits

Cada botón de una barra de herramientas puede incluir una imagen de mapa de bits. Una barra de herramientas usa una lista interna para almacenar la información que necesita para dibujar las imágenes. Al llamar a la función CreateToolbarEx , se especifica un mapa de bits monocromo o de color que contiene las imágenes iniciales y la barra de herramientas agrega la información a la lista interna de imágenes. Puede agregar imágenes adicionales más adelante mediante el mensaje TB_ADDBITMAP .

Cada imagen tiene un índice de base cero. La primera imagen agregada a la lista interna tiene un índice de 0, la segunda imagen tiene un índice de 1, etc. TB_ADDBITMAP agrega imágenes al final de la lista y devuelve el índice de la primera imagen nueva que agregó. Para asociar la imagen a un botón, debe enviar un mensaje de TB_ADDBUTTONS y especificar el índice de la imagen después de agregar mapas de bits a la lista de imágenes interna.

Windows supone que todas las imágenes con mapa de bits de una barra de herramientas tienen el mismo tamaño. Especifique el tamaño al crear la barra de herramientas mediante CreateToolbarEx. Si usa la función CreateWindowEx para crear una barra de herramientas, el tamaño de las imágenes se establece en las dimensiones predeterminadas de 16 por 15 píxeles. Puede usar el mensaje TB_SETBITMAPSIZE para cambiar las dimensiones de las imágenes de mapa de bits, pero debe hacerlo antes de agregar imágenes a la lista interna.

Definir imágenes de botón mediante listas de imágenes

También puede almacenar imágenes de botón en un conjunto de listas de imágenes. Una lista de imágenes es una colección de imágenes del mismo tamaño, cada una de las cuales se puede hacer referencia por su índice. Las listas de imágenes se usan para administrar grandes conjuntos de iconos o mapas de bits. Puede usar hasta tres listas de imágenes diferentes para mostrar botones en varios estados, como se muestra en la tabla siguiente.

State Descripción
Normal Botones en su estado predeterminado.
Acceso frecuente Botones que están debajo del puntero o presionados. Los elementos activos solo se admiten en los controles de la barra de herramientas que tienen el estilo TBSTYLE_FLAT .
Disabled Botones que están deshabilitados.

 

Una vez destruida la barra de herramientas, las aplicaciones deben liberar las listas de imágenes que hayan creado.

Definición de texto para botones

Cada botón puede mostrar una cadena además de, o en lugar de, una imagen. Una barra de herramientas mantiene una lista interna que contiene todas las cadenas disponibles para los botones de la barra de herramientas. Agregue cadenas a la lista interna mediante el mensaje TB_ADDSTRING , especificando la dirección del búfer que contiene las cadenas que se van a agregar. Cada cadena debe terminar en null y la última cadena debe terminar con dos caracteres NULL.

Cada cadena tiene un índice de base cero. La primera cadena agregada a la lista interna de cadenas tiene un índice de 0, la segunda cadena tiene un índice de 1, etc. TB_ADDSTRING agrega cadenas al final de la lista y devuelve el índice de la primera cadena nueva. Use el índice de una cadena para asociar la cadena a un botón.

El uso de TB_ADDSTRING no es la única manera de agregar cadenas a una barra de herramientas. Puede mostrar una cadena en un botón pasando un puntero de cadena en el miembro iString de la estructura TBBUTTON que se pasa a TB_ADDBUTTONS. Además, puede usar TB_SETBUTTONINFO para asignar texto a un botón de barra de herramientas.

Agregar botones de la barra de herramientas

Si usa la función CreateToolbarEx para crear una barra de herramientas, puede agregar botones a la barra de herramientas rellenando una matriz de estructuras TBBUTTON y especificando la dirección de la matriz en la llamada de función. Sin embargo, la función CreateWindowEx no tiene un parámetro para pasar una estructura TBBUTTON . CreateWindowEx crea una barra de herramientas vacía que se rellena enviando un mensaje de TB_ADDBUTTONS , especificando la dirección de una estructura TBBUTTON .

Una vez creada una barra de herramientas, puede agregar botones enviando un mensaje TB_INSERTBUTTON o TB_ADDBUTTONS . Cada botón se describe mediante una estructura TBBUTTON , que define los atributos del botón, incluidos los índices de su cadena y mapa de bits, así como su estilo, estado, identificador de comando y valor de 32 bits definido por la aplicación.

Nota

Si usa la función CreateWindowEx para crear una barra de herramientas, debe enviar el mensaje TB_BUTTONSTRUCTSIZE antes de agregar los botones. El mensaje pasa el tamaño de la estructura TBBUTTON a la barra de herramientas.

 

Estilos de botón de la barra de herramientas

El estilo de un botón determina cómo aparece el botón y cómo responde a la entrada de usuario. Por ejemplo, el estilo BTNS_BUTTON crea un botón de barra de herramientas que se comporta como un botón de inserción estándar. Un botón que tiene el estilo BTNS_CHECK es similar a un botón de inserción estándar, excepto que alterna entre los estados presionados y no presionados cada vez que el usuario hace clic en él.

Puede crear grupos de botones de barra de herramientas que actúen como botones de radio mediante el estilo BTNS_GROUP o BTNS_CHECKGROUP . Esto hace que un botón permanezca presionado hasta que el usuario elija otro botón en el grupo. Un grupo se define como una colección contigua de botones, todo ello con el estilo BTNS_GROUP o BTNS_CHECKGROUP .

El estilo BTNS_SEP crea un pequeño espacio entre botones o dibuja un etch entre los botones de las barras de herramientas planas. Un botón con el estilo BTNS_SEP no recibe entradas de usuario.

La versión 5.80 de los controles comunes introdujo algunos nuevos estilos de botón de barra de herramientas y cambiaron el nombre de algunos de los estilos anteriores. Todas las marcas de estilo de botón comienzan ahora con BTNS_XXX en lugar de TBSTYLE_XXX. Para obtener una lista y una explicación de los estilos de botón, vea Estilos de botón y control de barra de herramientas.

Estados del botón de la barra de herramientas

Cada botón de una barra de herramientas tiene un estado. La barra de herramientas actualiza el estado de un botón para reflejar las acciones del usuario, como hacer clic en el botón. El estado indica si el botón está presionado o no presionado, habilitado o deshabilitado, oculto o visible. Aunque una aplicación establece el estado inicial de un botón al agregar el botón a la barra de herramientas, puede cambiar y recuperar el estado enviando TB_GETSTATE y TB_SETSTATE mensajes a la barra de herramientas. Para obtener una lista de los estados de los botones de la barra de herramientas, consulte Estados de la barra de herramientas.

Identificador de comando

Cada botón tiene asociado un identificador de comando definido por la aplicación. Los identificadores de botón normalmente se definen en un archivo de encabezado de aplicación. Por ejemplo, un botón Pegar se puede definir como:

#define ID_PASTE 100

Cuando el usuario selecciona un botón, la barra de herramientas envía a la ventana primaria un WM_COMMAND o WM_NOTIFY mensaje que incluye el identificador de comando del botón. La ventana primaria examina el identificador de comando y lleva a cabo el comando asociado al botón. Para obtener información sobre cuándo los controles envían mensajes WM_COMMAND y cuándo envían WM_NOTIFY, vea la sección Comentarios de la documentación de WM_NOTIFY .

Tamaño y posición del botón

Una barra de herramientas realiza un seguimiento de sus botones asignando cada botón un índice de posición. El índice está basado en cero; es decir, el botón situado más a la izquierda tiene un índice de 0, el botón siguiente a la derecha tiene un índice de 1, etc. Una aplicación debe especificar el índice de un botón al enviar mensajes para recuperar información sobre el botón o para establecer los atributos del botón.

Una barra de herramientas actualiza los índices de posición a medida que se insertan y quitan los botones. Una aplicación puede recuperar el índice de posición actual de un botón mediante el mensaje TB_COMMANDTOINDEX . El mensaje especifica el identificador de comando de un botón y la ventana de la barra de herramientas usa el identificador para buscar el botón y devolver su índice de posición.

Todos los botones de una barra de herramientas tienen el mismo tamaño. La función CreateToolbarEx requiere que establezca el tamaño inicial de los botones al crear la barra de herramientas. Cuando se usa la función CreateWindowEx , el tamaño inicial se establece en las dimensiones predeterminadas de 24 en 22 píxeles. Puede usar el mensaje TB_SETBUTTONSIZE para cambiar el tamaño del botón, pero debe hacerlo antes de agregar los botones a la barra de herramientas. El mensaje TB_GETITEMRECT recupera las dimensiones actuales de los botones.

Cuando se agrega una cadena más larga que cualquier cadena actualmente en la barra de herramientas, la barra de herramientas restablece automáticamente el ancho de sus botones. El ancho se establece para dar cabida a la cadena más larga de la barra de herramientas.

Habilitación de la personalización

Una barra de herramientas tiene características de personalización integradas que puede poner a disposición del usuario proporcionando a la barra de herramientas el estilo de control común CCS_ADJUSTABLE . Las características de personalización permiten al usuario arrastrar un botón a una nueva posición o quitar un botón arrastrándolo fuera de la barra de herramientas. Además, el usuario puede hacer doble clic en la barra de herramientas para mostrar el cuadro de diálogo Personalizar barra de herramientas, que permite al usuario agregar, eliminar y reorganizar botones de la barra de herramientas. Para mostrar el cuadro de diálogo, use el mensaje TB_CUSTOMIZE . Una aplicación determina si las características de personalización están disponibles para el usuario y controla la medida en que el usuario puede personalizar la barra de herramientas.

Como parte del proceso de personalización, las aplicaciones a menudo necesitan guardar y restaurar el estado de una barra de herramientas. Por ejemplo, muchas aplicaciones almacenan el estado de la barra de herramientas antes de que el usuario comience a personalizar la barra de herramientas en caso de que el usuario quiera restaurar la barra de herramientas a su estado original. El control de la barra de herramientas no mantiene automáticamente un registro de su estado de precustomización. La aplicación debe guardar el estado de la barra de herramientas para restaurarla. Para obtener más información, vea Uso de controles de barra de herramientas.

Habilitación del seguimiento rápido

El seguimiento frecuente significa que cuando el puntero se mueve sobre un elemento, la apariencia del botón cambia. Cuando los estilos visuales están habilitados, las barras de herramientas admiten el seguimiento frecuente de forma predeterminada. De lo contrario, solo los controles de la barra de herramientas creados con el estilo TBSTYLE_FLAT admiten el seguimiento frecuente. Puede usar otros estilos de ventana en combinación con TBSTYLE_FLAT para generar barras de herramientas que habilitan el seguimiento activo, pero tienen un aspecto diferente de una barra de herramientas plana. Para obtener más información, vea Uso de controles de barra de herramientas.