Esta nota describe las clases de barra de control en MFC: el general CControlBar, CStatusBar, CToolBar, CDialogBary CDockBar.
Un ControlBar es un CWnd-derivados de clase que:
Barras de controles admiten los estilos adicionales:
Las clases derivadas de CControlBar proporcionan implementaciones más interesantes:
Barra de control todos los objetos/windows serán ventanas secundarias de alguna ventana de marco primaria. Normalmente se añaden como un hermano para el área de cliente del marco (por ejemplo, un cliente MDI o vista). El identificador de ventana de niño de una barra de control es importante. El diseño predeterminado de la barra de control sólo funciona para las barras de control con IDs en el rango de AFX_IDW_CONTROLBAR_FIRST a AFX_IDW_CONTROLBAR_LAST. Tenga en cuenta que aunque existe una gama de 256 control barra IDs, los primeros 32 de estas barras de control IDs son especiales ya que son directamente compatibles con la arquitectura de vista previa de impresión.
La clase CControlBar proporciona una implementación estándar para
Objetos de C++ control barra normalmente se incrustarán como miembros de un CFrameWnd clase derivan y se limpian cuando el padre HWND y objeto son destruidos. Si necesita asignar un objeto de la barra de control en el montón, simplemente se puede establecer al miembro m_bAutoDestruct en TRUE para hacer el control bar "Eliminar esto" cuando se destruye el HWND.
Importa&ntenbsp; Si crea su propio CControlBar-clase derivada, en lugar de utilizar uno de MFC deriva las clases, como CStatusBar, CToolBaro CDialogBar, será necesario establecer el miembro de datos m_dwStyle . Esto puede hacerse en el reemplazo de crear:
/ / CMyControlBar se deriva de CControlBar
BOOL CMyControlBar::Create (CWnd * pParentWnd, DWORD dwStyle, UI&NT nID)
{
nbsp; m_dwStyle = dwStyle;
.
.
.
}
Algoritmo de diseño de la barra de control
El algoritmo de diseño de barra de control es muy sencillo. La ventana de marco envía un mensaje WM_SIZEPARENT a todos los niños en el rango de la barra de control. Junto con este mensaje, se pasa un puntero al rectángulo cliente de la dominante. Este mensaje se envía a los niños en orden Z. Los niños de la barra de control utilizan esta información para posicionarse y disminuir el tamaño del área de cliente de los padres. El rectángulo final que queda para el área de cliente normal (menos barras de control) se utiliza para colocar la ventana principal cliente (normalmente un cliente, vista o separador ventana MDI).
Para más detalles, consulte CWnd::RepositionBars y CFrameWnd::RecalcLayout.
Mensajes de Windows privados MFC, incluyendo WM_SIZEPARENT, están documentados en 24 de nota técnica.
Una barra de Estado es una barra de control que tiene una fila de paneles de salida de texto. Hay dos formas comunes de utilizar paneles de salida de texto:
(por ejemplo, el menú estándar ayuda línea del mensaje). Estos generalmente tienen acceso a una base 0 indexado
(por ejemplo, los PAC, NUM y SCRL indicadores). Estos se acceden por ID de cadena o el comando.
La fuente de la barra de Estado está 10 puntos "MS Sans Serif" (dictada por la Guía de diseño de aplicaciones de interfaz de Windows o la mejor coincidencia de Mapeados de fuente de una fuente proporcional Suiza de 10 puntos). En ciertas versiones de Windows, tales como la edición japonesa y Windows 4.0, son diferentes las fuentes seleccionadas.
Los colores utilizados en la barra de Estado también son consistentes con la recomendación de la Guía de diseño de aplicaciones de interfaz de Windows. Estos colores no están codificados duro y cambian dinámicamente en respuesta a la personalización del usuario a través del Panel de Control.
| Elemento | Valor de COLOR de Windows | RGB predeterminado |
| Fondo de la barra de Estado | COLOR_BTNFACE | RGB (192, 192, 192) |
| Texto de la barra de Estado | COLOR_BTNTEXT | RGB (000, 000, 000) |
| Bordes de arriba/izquierda de la barra de Estado | COLOR_BTNHIGHLIGHT | RGB (255, 255, 255) |
| Bordes de bot y derecho de la barra de Estado | COLOR_BTNSHADOW | RGB (128, 128, 128) |
CCmdUI apoyo a CStatusBar
La forma de indicadores se actualizan normalmente es a través del mecanismo ON_UPDATE_COMMAND_UI . El tiempo de inactividad, la barra de estado llamará al controlador ON_UPDATE_COMMAND_UI con el ID de cadena del panel indicador.
Puede llamar al controlador de ON_UPDATE_COMMAND_UI:
Consulte la clase CStatusBar en la Referencia de la biblioteca de clases para obtener detalles sobre CStatusBar creación y personalización de APIs. Más personalización de barras de Estado debería hacerse antes de la barra de estado inicialmente se hace visible.
La barra de estado admite sólo un panel elástico, normalmente el primer panel. El tamaño de ese panel es realmente un tamaño mínimo. Si es más grande que el tamaño mínimo de todos los paneles de la barra de Estado, cualquier ancho extra se dará al panel elástico. La aplicación predeterminada con una barra de Estado tiene indicadores alineados a la derecha para CAP, NUM y SCRL ya que el primer panel es elástico.
Una barra de herramientas es una barra de control con una fila de botones de mapa de bits que pueden incluir separadores. Se admiten dos estilos de botones: pulsadores y botones de casilla de verificación. Funcionalidad de grupo radio puede construirse con la casilla de verificación botones y ON_UPDATE_COMMAND_UI.
Todos los botones de mapa de bits en la barra de herramientas son tomados de un mapa de bits. Este mapa de bits debe contener una imagen o pictogramas para cada botón. Normalmente el orden de los imágenes y pictogramas en el mapa de bits es el mismo orden se sorteará en la pantalla. (Esto puede cambiarse mediante la personalización de las API de.)
Cada botón debe ser del mismo tamaño. El valor predeterminado es los estándar píxeles 24 x 22. Cada glifo de imagen debe ser del mismo tamaño y debe estar al lado en el mapa de bits. El tamaño de imagen/glifo predeterminado es 15 x 16 píxeles. Por lo tanto, para una barra de herramientas con 10 botones (utilizando tamaños estándar), necesita un mapa de bits que es 160 píxeles de ancho y 15 píxeles de alto.
Cada botón tiene una y sólo una imagen y pictogramas. El botón de diferente Estados y estilos (por ejemplo, presiona arriba, abajo, discapacitados, discapacitados abajo, indeterminado) son generados algorítmicamente desde que una imagen/pictograma. Puede utilizarse cualquier color mapa de bits o DIB en teoría. El algoritmo para generar el botón diferente Estados funciona mejor si la imagen original es de tonos de gris. Mira los botones de la barra de herramientas estándar y el botón de barra de herramientas imágenes prediseñadas en ejemplo General de MFC imágenes prediseñadas para ver ejemplos.
Los colores utilizados en la barra de herramientas también son consistentes con la recomendación de la Guía de diseño de aplicaciones de interfaz de Windows. Estos colores no están codificados duro y cambian dinámicamente en respuesta a la personalización del usuario a través del Panel de Control.
| Elemento | Valor de COLOR de Windows | RGB predeterminado |
| Fondo de barra de herramientas | COLOR_BTNFACE | RGB(192,192,192) |
| Botones de barra de herramientas bordes arriba/izquierda | COLOR_BTNHIGHLIGHT | RGB(255,255,255) |
| Botones de barra de herramientas bordes bot/derecho | COLOR_BTNSHADOW | RGB(128,128,128) |
Además, los botones de barra de herramientas de mapa de bits son repintados como si fueran controles de botón estándar de Windows. Este color se produce cuando se carga el mapa de bits del recurso y en respuesta a un cambio de colores del sistema en respuesta a la personalización del usuario a través del Panel de Control. Los siguientes colores en un mapa de bits de barra de herramientas serán repintados automáticamente por lo que debe utilizarse con precaución. Si no desea tener una porción de su mapa de bits repintada, a continuación, utilice un color que cerca se aproxima a uno de los valores RGB asignados. La asignación se realiza basándose en los valores RGB exactos.
| Valor RGB | Valor de COLOR asignada dinámicamente |
| RGB (000, 000, 000) | COLOR_BTNTEXT |
| RGB (128, 128, 128) | COLOR_BTNSHADOW |
| RGB (192, 192, 192) | COLOR_BTNFACE |
| RGB (255, 255, 255) | COLOR_BTNHIGHLIGHT |
Consulte clase CToolBar la Referencia de la biblioteca de clases para obtener más información acerca de la creación de CToolBar y personalización APIs. Más personalización de barras de herramientas debe hacerse antes de la barra de herramientas inicialmente se hace visible.
La personalización de la API pueden utilizarse para ajustar el botón IDs, estilos, separador ancho y qué glifo de imagen se utiliza para qué botón. De forma predeterminada no necesita utilizar estas API.
CCmdUI soporte para CToolBar
La forma siempre se actualizan los botones de la barra de herramientas es a través del mecanismo ON_UPDATE_COMMAND_UI . El tiempo de inactividad, la barra de herramientas llamará al controlador ON_UPDATE_COMMAND_UI con el identificador de comando del botón. No se llama a ON_UPDATE_COMMAND_UI para separadores, pero se llama pulsadores y botones de casilla de verificación.
Puede llamar al controlador de ON_UPDATE_COMMAND_UI:
Casilla botones son botones de casilla de verificación de "AUTO"; es decir, cuando el usuario presiona les inmediatamente cambian Estado. Comprobar es el estado abajo o deprimido. No hay ninguna forma de interfaz de usuario integrada para cambiar un botón en el Estado "indeterminado"; eso debe hacerse a través de código.
La personalización de la API le permitirá cambiar el estado de un botón determinado, preferiblemente debe cambiar esos Estados en el controlador ON_UPDATE_COMMAND_UI para el comando que representa el botón de la barra de herramientas. Recuerde, el procesamiento en inactividad cambiará el estado de los botones de la barra de herramientas con el controlador ON_UPDATE_COMMAND_UI , por lo que cualquier cambio a estos Estados a través de SetButtonStyle puede perderse tras la próxima inactivo.
Botones de la barra de herramientas enviará mensajes WM_COMMAND como botones normales o elementos de menú y normalmente son manejados por un controlador de ON_COMMAND en la misma clase que proporciona el controlador ON_UPDATE_COMMAND_UI.
Hay estilos de botón cuatro barra de herramientas (valores TBBS_) utilizados para Estados de visualización:
Los seis estilos de botón oficiales de guía de diseño de aplicaciones de interfaz de Windows están representados por los siguientes valores TBBS:
Una barra de diálogo es una barra de control que contiene los controles estándar de Windows. Actúa como un cuadro de diálogo que contiene los controles y soporta tabulación entre ellos. También actúa como un cuadro de diálogo que usa una plantilla de cuadro de diálogo para representar la barra.
Un CDialogBar se utiliza para la barra de herramientas de vista previa de impresión, que contiene los controles estándar de pulsador.
Utilizando un CDialogBar es como usar un CFormView. Debe definir una plantilla de cuadro de diálogo para la barra de diálogo y eliminar todos los estilos excepto WS_CHILD. Tenga en cuenta que el diálogo no debe ser visible.
Las notificaciones de control para un CDialogBar se enviará a la dominante de la barra de control (como botones de la barra de herramientas).
CCmdUI soporte para CDialogBar
Botones de la barra de diálo&go deben actualizarse a través del mecanismo de controlador ON_UPDATE_COMMAND_UI . En el tiempo de inactividad, la barra de diálogo llamará al controlador ON_UPDATE_COMMAND_UI con el identificador de comando de todos los botones que tienen una ID gt; = 0 x 8000 (es decir, en el intervalo de identificadores de comandos).
Puede llamar al controlador de ON_UPDATE_COMMAND_UI:
Personalización puede hacerse a través del administrador de ventanas estándar API.
&Notas técnicas por número |nbsp; Notas técnicas por categoría