VC Cómo cargar el control de árbol en el control CTab
Capítulo 5 Ejercicio CTab
5.1 Pestaña 5.2 Funciones principales del control de pestañas
El control de pestañas (TabControl) se utiliza en una ventana como un cuadro de diálogo, etc. La misma área de usuario controla múltiples conjuntos de información de visualización o información de control, y un conjunto de etiquetas en la parte superior controla diferentes mensajes de información. La etiqueta puede ser una descripción de texto o un icono que representa el significado del texto, o una combinación de ambos. dos. Para diferentes etiquetas de selección, habrá un conjunto de información de solicitud o información de control correspondiente para que los usuarios interactúen. Esto es más común en la hoja de propiedades de WINDOWS98. También hay un estilo especial de etiqueta, a saber, la etiqueta de estilo TBS_BUTTONS. Esta etiqueta parece un botón y cambia de estado con un clic del mouse. Generalmente se usa para realizar algunas funciones en lugar de mostrar o controlar información.
Cuando se trata de etiquetas, lo más rápido que me viene a la mente es el diálogo de la hoja de propiedades (PropertySheet), y las aplicaciones combinadas de las dos se pueden ver en todas partes. El cuadro de diálogo de la tabla de propiedades a veces también se denomina cuadro de diálogo de varias páginas (Multiple-PageDialog) o cuadro de diálogo de etiqueta (Table Dialog). Se pueden configurar hasta 24 páginas de propiedades (PropertyPages) y se pueden seleccionar diferentes páginas de propiedades. las etiquetas en la parte superior. También hay un cuadro de diálogo de hoja de propiedades especial, al igual que el asistente de clase AppWizard en VC 5.0. No tiene etiquetas para que los usuarios seleccionen, pero controla la visualización de las páginas de propiedades en orden. páginas de propiedades generales. Hay botones "Confirmar", "Anterior", "Siguiente", "Finalizar" y "Ayuda".
El control de etiquetas solo tiene una forma de encapsulación en MFC, que es la clase de control CtabCtrl. Cuando use etiquetas, puede agregarlas directamente en el cuadro de diálogo o usarlas como subventanas en la ventana. Sin embargo, debe elegir crear una etiqueta al aplicar de esta manera.
5.3 Estructura de objetos de la pestaña 5.4 control de pestañas
5.4.1 Método para establecer el control de pestañas 5.4.2
CTabCtrl&tabCtrl crea una estructura de objetos de control de pestañas
Create crea control de etiquetas y vincula objetos
Control de etiquetas CTabCtrl::El formato de llamada de Create es el siguiente:
BOOL Create( DWORD dwStyle, const RECTamp; rect, CWnd* pParentWnd , UINT nID );
El parámetro dwStyle se usa para determinar el estilo del control de etiqueta; rect se usa para controlar el tamaño y la posición de la etiqueta; pParentWnd se usa para determinar el identificador de la ventana principal del; control de etiqueta; nID se utiliza para determinar el identificador de control de etiqueta.
El estilo del control de etiqueta puede ser una combinación de los siguientes valores:
TCS_BUTTONS significa definir la apariencia de la etiqueta como un botón
TCS_FIXEDWIDTH hace que todas las etiquetas tengan el mismo ancho
TCS_FOCUSNEVER hace que una etiqueta específica nunca reciba el foco de entrada
TCS_FOCUSONBUTTONDOWN recibe el foco de entrada cuando se hace clic en la etiqueta con el mouse. Solo se usa con TCS_BUTTONS
.TCS_FORCEICONLEFT fuerza el icono hacia la izquierda, la parte restante centra la etiqueta
TCS_FORCELABELLEFT hace que el icono y la etiqueta estén alineados a la izquierda
TCS_MULTILINE permite que el control de etiqueta muestre varias líneas etiquetas
TCS_OWNERDRAWFIXED permite que la ventana principal dibuje sus propias etiquetas
TCS_RIGHTJUSTIFY Alinea la etiqueta a la derecha
TCS_SHAREIMAGELISTS La imagen controlada por la etiqueta no se deshace cuando el control se deshace
TCS_TOOLTIPS Permite que el control de etiqueta tenga controles de información sobre herramientas
TCS_TABS Las etiquetas se muestran normalmente, que es el estado predeterminado
TCS_SINGLELINE Muestra etiquetas solo una línea, el estado predeterminado
TCS_RAGGEDRIGHT no hace que las etiquetas llenen automáticamente el área de control, el estado predeterminado
De manera similar, el control de etiquetas también puede usar algunos estilos de control de la ventana: p>
WS_CHILD crea una subventana para el control de etiquetas, que solo se puede usar con el estilo WS_POPUP
WS_VISIBLE Crea un control de etiquetas inicialmente visible
WS_DISABLED Crea un control de etiquetas inicialmente invisible control de etiqueta
WS_GROUP Crea el primer control del grupo de control de etiquetas
WS_TABSTOP Crea un control de etiqueta que se puede mover con la tecla TAB
5.4.3 Etiqueta 5.4 .4 Clase de atributo del control de etiquetas
La clase de atributo del control de etiquetas incluye obtener la lista de imágenes asociadas con el control de etiquetas GetImageList, establecer la lista de imágenes del control de etiquetas SetImageList, obtener el número total de etiquetas en el control de etiquetas GetItemCount, obtiene la información relevante de una etiqueta específica en el control de etiqueta GetItem, establece algunas o todas las propiedades de la etiqueta SetItem, detecta la etiqueta GetCurSel actualmente seleccionada, establece una etiqueta SetCurSel para el estado seleccionado y SetCurSel para la etiqueta con el foco de entrada actual , etc.
5.4.5 Etiqueta 5.4.6 Método de operación del control de etiqueta
El método de operación del control de etiqueta incluye insertar una etiqueta InsertItem en el control de etiqueta, eliminar una etiqueta DeleteItem y eliminar la etiqueta del control de etiqueta Eliminar todos los elementos DeleteAllItems, eliminar una lista de imágenes del control de etiqueta RemoveImage y dibujar un elemento específico en el control de etiqueta DrawItem, etc.
5.5 Etiqueta 5.6 Estructura de datos del control de etiquetas
Cuando se utiliza el control de etiquetas, la función que se debe utilizar es insertar etiquetas en el control de etiquetas.
El prototipo de la función InsertItem es el siguiente:
BOOL InsertItem(int nItem, TC_ITEM * pTabCtrlItem
TC_ITEM en esta función es la estructura de datos de la información utilizada al agregar etiquetas); y sus miembros de datos El método de definición y el significado son los siguientes:
typedef struct _TC_ITEM {
Máscara UINT // Determina la máscara o el bit de configuración del miembro de la estructura
UINT lpReserved1; // Reservado y sin usar
UINT lpReserved2; // Reservado y sin usar
LPSTR pszText; cchTextMax; // Nombre de la etiqueta cadena Tamaño del búfer
int iImage; // Número de índice de la imagen controlado por la etiqueta
LPARAM lParam // Datos relacionados de 32 bits definidos por la aplicación
p>
} TC_ITEM ;
Cuando el mouse hace clic en una etiqueta en el control de etiqueta, el control de etiqueta enviará mensajes de notificación relevantes a su ventana principal. Al procesar estos mensajes de notificación, el programa puede implementar. varias funciones.
5.7 Uso básico de hojas de propiedades y páginas de propiedades
En el proceso de control de etiquetas, el cuadro de diálogo de la hoja de propiedades y las páginas de propiedades son esenciales. En la biblioteca de clases MFC, la clase de diálogo de hoja de propiedades CpropertySheet se deriva de la clase CWnd y la clase de página de propiedades CpropertyPage se deriva de la clase Cdialog. Su uso es básicamente el mismo:
1. páginas de propiedades. El método para crear una página de propiedades es el mismo que para crear un recurso de diálogo general. Puede usar el editor de diálogo para crear una plantilla de diálogo para cada página de propiedades. La diferencia es que cuando se usa ClassWizard para generar una clase para la propiedad. página, debe seleccionar el atributo. La clase de página CpropertyPage se utiliza como clase base en lugar de la clase de cuadro de diálogo general Cdialog como clase base;
2. páginas de propiedades creadas. El orden de creación se puede intercambiar, pero es necesario agregar la página de propiedades al cuadro de diálogo de la hoja de propiedades después de la creación;
3. Aunque la clase de diálogo de la hoja de propiedades CpropertySheet no se deriva de la clase de diálogo Cdialog, las operaciones de las dos son muy similares. Llamar a la función DoModal() mostrará un cuadro de diálogo de hoja de propiedades modal, y llamar a la operación Create() mostrará un. cuadro de diálogo de hoja de propiedades no modal;
4. Procesamiento del intercambio de datos. De manera similar al cuadro de diálogo, el intercambio de datos entre el cuadro de diálogo de la hoja de propiedades y el objeto también se realiza a través del miembro de datos 2, excepto que la hoja de propiedades en sí no tiene miembros de datos y el intercambio de datos real es el miembro de datos en la propiedad. página; p>
5. Procesamiento de los cuadros de diálogo del asistente. Si desea mostrar un cuadro de diálogo del asistente, primero debe llamar a la función SetWizardMode() para realizar un procesamiento especial en el cuadro de diálogo del asistente antes de mostrarlo. Para los cuadros de diálogo del asistente con botones, también debe llamar a SetWizardButtons() para personalizar el botón. funciones del cuadro de diálogo del asistente, al final de la operación del usuario, también se debe llamar a la función SetFinishText() para establecer el botón "Finalizar" en un estado válido.
5.8 Etiqueta 5.9 Programa de muestra de habilidades de aplicación para el control de etiquetas
Este artículo ofrece un ejemplo de aplicación de etiquetas basada en documentos. El programa de ejemplo demuestra las habilidades de aplicación práctica del control de etiquetas simplemente configurando menús, etiquetas y tablas de atributos. El programa simplemente interactúa con el usuario seleccionando opciones de menú para que aparezca un cuadro de diálogo para configurar tablas de atributos como el color del texto, la fuente, y modificación.
Los pasos de implementación son los siguientes:
1. Utilice el asistente de aplicaciones AppWizard para crear una pestaña de proyecto basada en documentos. Al seleccionar el tipo de proyecto, se debe seleccionar un solo documento. Utilice el generador de menús de recursos, elimine los menús inútiles y agregue la siguiente estructura de menú
Identificador de nombre de menú
Configuración (S) (nombre del menú emergente)
Configuración de primer plano (F) IDM_FRGRND
3. Utilice el diseñador del cuadro de diálogo para configurar las cuatro páginas de propiedades necesarias para el cuadro de diálogo de la tabla de propiedades. a lo siguiente al seleccionar la clase base: Utilice la clase de página de propiedades CpropertyPage como clase base y cambie todos los atributos de los controles, como cuadros de diálogo y menús, a chino. Las cuatro páginas de propiedades y los controles que incluyen son: (1) El cuadro de diálogo de propiedades de texto incluye un cuadro de entrada de texto para ingresar texto, que se utiliza para ingresar y modificar el texto que se muestra en la ventana; incluye tres Una casilla de verificación se utiliza para determinar la modificación de la fuente mostrada; (3) el cuadro de diálogo de propiedades de espaciado de caracteres incluye una etiqueta para mostrar información de solicitud y un cuadro de entrada de texto para ingresar el tamaño de espaciado de caracteres (4) el cuadro de diálogo de propiedades de color; incluye un cuadro de grupo y tres botones de opción (5) Establece una etiqueta en la ventana para mostrar el texto de entrada.
Los parámetros de configuración de los controles anteriores son los siguientes:
Nombre del control, título, nombre, cadena de identificador
Control de etiqueta IDC_TAABCTRL
Texto de la declaración espaciado entre caracteres (10-100) IDC_STATIC1
Cuadro de edición IDC_LIST
Color del cuadro de grupo IDC_STATIC2
Botón de opción negro IDC_BLACK
Rojo IDC_RED< / p>
Azul IDC_BLUE
Cuadro de texto (cuadro de edición) IDC_TEXT
Establecer fuente (botón de verificación) Negrita IDC_BOLD
Cursiva IDC_ITALIC p>
Subrayar IDC_UNDERLINE
Botón para confirmar IDOK
Cancelar IDCANCEL
Utilice el asistente de clases ClassWizard en el cuadro de diálogo de la tabla de propiedades CtabDlg, cuadro de diálogo de la página de propiedades CtextPage y agregue los siguientes miembros de datos a CstylePage:
Miembro de datos de tipo cadena de identificador
IDC_TABCTRL CtabCtrl m_tabCtrl
IDC_DIST int m_nDist
IDC_BLACK int m_nColor
IDC_TEXT Cstring m_cText
IDC_BOLD BOOL m_bBold
IDC_ITALIC BOOL m_bItalic
IDC_UNDERLINE BOOL m_bUnderline
Lo anterior Los miembros de datos también se pueden agregar manualmente en TABDlg.h, StylePage.h y TextPage.h.
4. Agregue los miembros de datos que se mostrarán a la clase de vista para intercambiar datos con el cuadro de diálogo e inicialice los datos en la función de inicialización.
(1) Agregue el siguiente código a TabView.h:
#include TabDlg.h
#include TextPage.h
#include StylePage.h
clase CTabView: public CView
{public:
int nDist; //Valor
int nColor; //Color
CString cText; //Cadena china
BOOL bBold, bItalic, bUnderline; //Propiedades de fuente
}
(2) Inicialice los miembros de datos en TabView.cpp de la siguiente manera.
CTabView::CTabView()
{ nDist=20;
nColor=1
cText=CString(demostración de control de etiqueta) Ejemplo);
bBold=bItalic=bUnderline=FALSE;
}
(3) Agregue una etiqueta al control en TabDlg.cpp para implementar el fondo. Establecer función.
BOOL CTabDlg::OnInitDialog()
{ CDialog::OnInitDialog();
TC_ITEM tcItem //Agregar etiqueta
tcItem.mask=TCIF_TEXT;
tcItem.pszText=Espaciado entre palabras;
m_tabCtrl.InsertItem(0,amp;tcItem);
tcItem.pszText=Color Establecer;
m_tabCtrl.InsertItem(1,&tcItem);
m_tabCtrl.SetCurSel(1);
devuelve VERDADERO;
}
Cuando se cambia la etiqueta, el control de etiqueta enviará automáticamente un mensaje de notificación TCN_SELCHANGE a la ventana de diálogo. En este momento, es necesario cambiar la visualización y ocultación de la página de propiedades de acuerdo con la etiqueta seleccionada. número de índice, que debería mejorarse Función OnSelchangeTabctrl():
void CTabDlg::OnSelchangeTabctrl(NMHDR* pNMHDR, LRESULT* pResult)
{ int iPage=m_tabCtrl.GetCurSel(). ; //Número de etiqueta seleccionada
switch(iPage){
caso 0: // espaciado entre palabras
GetDlgItem(IDC_STATIC2)-gt;ShowWindow(SW_HIDE) ; //ocultar botón de selección
GetDlgItem(IDC_BLACK)-gt;ShowWindow(SW_HIDE);//Ocultar el botón de selección
GetDlgItem(IDC_RED)-gt;ShowWindow(SW_HIDE); //Ocultar el botón de selección
GetDlgItem(IDC_BLUE)-gt;ShowWindow(SW_HIDE);//Ocultar el botón de selección
GetDlgItem(IDC_STATIC1)-gt;ShowWindow(SW_SHOW); //Mostrar el número de elementos de entrada
GetDlgItem(IDC_DIST)-gt;ShowWindow(SW_SHOW);//Mostrar el número de elementos de entrada
break;
caso 1: //Configuración de color
GetDlgItem(IDC_STATIC1)-gt;ShowWindow(SW_HIDE);//Ingreso del número de elementos ocultos
GetDlgItem(IDC_DIST)-gt; ShowWindow(SW_HIDE);//Ingreso del número de elementos ocultos
GetDlgItem(IDC_STATIC2)-gt;ShowWindow(SW_SHOW); //Mostrar selección de opciones
GetDlgItem(IDC_BLACK)- gt;ShowWindow(SW_SHOW); //Mostrar selección de opciones
GetDlgItem (IDC_RED)-gt;ShowWindow(SW_SHOW); //Mostrar selección de opciones
GetDlgItem(IDC_BLUE)-gt; ShowWindow(SW_SHOW); //Mostrar selección de opciones
break;
}
*pResult = 0
}
(4) Menú
Mejora de funciones.
Al ejecutar la función de menú correspondiente, se debe mejorar el código para la función correspondiente agregada por el asistente de clase. Esto requiere procesar el archivo TabView.cpp. La función de configuración de fondo es la siguiente:
void CTabView. ::OnBkgrnd()
{ CTabDlg ctd;
ctd.m_nDist=nDist;
ctd.m_nColor=nColor;
if (ctd.DoModal( )==IDCANCEL) retorno;
nDist=ctd.m_nDist;
nColor=ctd.m_nColor;
Invalidar(); /Redibujar la ventana
}
Del mismo modo, también es necesario mejorar la función de configuración de primer plano:
void CTabView::OnFrgrnd()
{ CPropertySheet cps (configuración de primer plano); //Crear objeto de tabla de atributos
CTextPage ctp; //Mostrar página de atributos de texto
CStylePage csp; /p>
ctp.m_cText=cText;
csp.m_bBold=bBold;
csp.m_bItalic=bItalic;
csp.m_bUnderline=bSubrayado ;
cps.AddPage(amp; ctp); //Agregar página de propiedades
cps.AddPage(amp; csp);
if(cps.DoModal) ()==IDCANCEL) retorno;
cText=ctp.m_cText;
bBold=csp.m_bBold;
bItalic=csp.m_bItalic;
bUnderline= csp.m_bUnderline;
Invalidate(); //Redibujar la ventana
}
(5) Para demostrar completamente la relación entre el control de etiqueta y cada página de propiedades La función de intercambio de datos debe realizar la función de visualización de ventana después de que se completa el intercambio de datos entre cada página de propiedades y el usuario. La función de función implementada por el autor muestra la fuente y la función de cuadrícula de fondo de la propiedad. página La función correspondiente en TabView.cpp El código de la función es el siguiente:
void CTabView::OnDraw(CDC* pDC)
{ CTabDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: agregue código de dibujo para datos nativos aquí
RECT rc;
GetClientRect(amp; rc);
int i, j, k;
CPen pen, *pOldPen;
COLORREF color
interruptor (nColor; ){
caso 0: color=RGB(0, 0, 0); //Establecer negro
descanso;
caso 1: color=RGB( 0xff, 0, 0); //Establecer rojo
break;
caso 2: color=RGB(0, 0, 0xff); //Establecer azul
romper;
}<
/p>
pen.CreatePen(PS_SOLID, 1, color);
pOldPen=pDC-gt; SelectObject(amp; pen); j=rc.right/nDist 1;
k=rc.bottom/nDist 1;
for(i=0;i
pDC-gt; MoveTo(i*nDist, 0);
pDC-gt; LineTo(0, i*nDist);
if(i
pDC-gt; MoveTo(i*nDist, 0);
pDC-gt; LineTo(rc.right, (j-i)*nDist) más {
pDC-gt; MoveTo(0, (i-j)*nDist);
pDC-gt; LineTo(rc.right, i*nDist);
}
}
pDC-gt;SelectObject(amp;pOldPen);
Fuente CFont, *pOldFont;
font.CreateFont(50, 0, 0 , 0, bNegrita?1000:200,
bCursiva, bSubrayado, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH, NULL); /p>
pOldFont=pDC-gt;SelectObject(amp;font);
pDC-gt;TextOut(20, 20, cText);
pDC-gt; SelectObject(pOldFont);
}
Aunque todo el proceso de implementación del control de etiquetas es relativamente complicado, siempre que domines la esencia de su implementación, no es muy difícil diseñar una excelente interfaz de control de etiquetas
El resultado del ejemplo del ejercicio de control de etiquetas implementado por el autor es el siguiente:
El resultado del ejemplo del ejercicio de control de etiquetas
Capítulo 6 Ejercicio CToolBar
6.1 Las funciones principales del control de la barra de herramientas
La llamada barra de herramientas es un conjunto de botones de comando compuestos de mapas de bits y separadores. La parte del botón del mapa de bits puede ser un. botón pulsador, un botón de casilla de verificación, un botón inalámbrico, etc. La clase de objeto de la barra de herramientas se deriva de la clase de marco de ventana principal CframeWnd o CMDIFrameWnd. Su clase controla CToolBar:: GetToolBarCtrl es una función miembro encapsulada en la biblioteca de clases MFC, lo que permite. el uso de controles generales y funciones adicionales proporcionadas en la biblioteca de clases. Los controles de clase CtoolBar. Los controles miembros proporcionan todas las funciones de los controles generales de Windows. Sin embargo, al llamar a la función miembro GetToolBarCtrl para obtener una referencia, la barra de herramientas puede tener características más sólidas.
La creación de una barra de herramientas consta de cuatro pasos: primero, crear el recurso de la barra de herramientas; luego, crear la estructura del objeto de la barra de herramientas; en segundo lugar, crear el objeto de la barra de herramientas y vincularlo llamando a la función de creación; cargar la herramienta.
Además, también se puede crear cargando directamente el mapa de bits. Los pasos son los siguientes: primero cree el objeto de la barra de herramientas; luego cree la barra de herramientas y vincule el objeto llamando a la función de creación; el mapa de bits que contiene el botón; finalmente use la función SetButtons para establecer el estilo del botón y establecer contacto con el mapa de bits.
Entre ellos, todos los mapas de bits de los botones se almacenan en un archivo de mapa de bits. El tamaño de los mapas de bits de los botones es el mismo. El valor predeterminado es 16 puntos de ancho y 15 puntos de alto. . La función de botón de configuración tiene un puntero y un valor de índice que apunta a un conjunto de ID de identificador de control para determinar la posición de cada botón. Si el separador ID_SEPARATOR existe, entonces no hay ningún valor de índice para la imagen. En circunstancias normales, los botones de la barra de herramientas están organizados en una sola fila de izquierda a derecha. Puede cambiar las reglas de clasificación mediante la función SetButtonInfo. Los últimos botones de la barra de herramientas son todos del mismo tamaño, 24 x 22 píxeles, y cada botón solo apunta a una imagen. Los botones en la barra de herramientas son botones desplegables de forma predeterminada. Los botones de casilla de verificación se pueden implementar configurando el estilo TBBS_CHECKBOX, y los botones inalámbricos se pueden implementar llamando a la función miembro SetRadio.
6.2 Estructura de objetos del control de la barra de herramientas
6.2.1 Estructura de objetos de la barra de herramientas
6.2.1.1 Método de creación de la barra de herramientas
CToolBar & ToolBar crea la estructura del objeto de la barra de herramientas
Create crea el objeto de la barra de herramientas y lo vincula
El formato de llamada de la clase de barra de herramientas CToolBar::Create es el siguiente:
BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
UINT nID = AFX_IDW_TOOLBAR);
El parámetro pParentWnd se utiliza para determinar el puntero a la ventana principal de la barra de herramientas; el parámetro dwStyle se usa para determinar el estilo de la barra de herramientas y su valor es el siguiente; el parámetro nID se usa para determinar el identificador de la subventana de la barra de herramientas.
CBRS_TOP significa que la barra de herramientas está en la parte superior de la ventana del marco
CBRS_BOTTOM significa que la barra de herramientas está en la parte inferior de la ventana del marco
CBRS_NOALIGN significa que la barra de herramientas no cambiará cuando la ventana principal cambie de tamaño. Respuesta
CBRS_TOOLTIPS indica que la barra de herramientas tiene una función de solicitud dinámica
CBRS_SIZE_DYNAMIC indica que la barra de herramientas es estática y no se puede cambiar
p>CBRS_SIZE_FIXED indica que la barra de herramientas es dinámica y se puede cambiar
p>
CBRS_FLOATING significa que la barra de herramientas está flotante
CBRS_FLYBY significa que la información sobre los botones en la barra de herramientas se muestra en la barra de estado
CBRS_HIDE_INPLACE significa que la barra de herramientas está oculta
Además de las funciones anteriores, también incluye configurar el tamaño de los botones y mapas de bits SetSizes, configurar la altura de la barra de herramientas SetHeight, cargar el recurso de la barra de herramientas LoadToolBar, cargar el mapa de bits del botón de la barra de herramientas LoadBitmap, configurar el mapa de bits del botón de la barra de herramientas SetBitmap y configurar la barra de herramientas El estilo y el valor de índice del botón de mapa de bits están controlados por funciones como SetButtons.
6.2.1.2 Atributos de la clase de barra de herramientas
Los atributos de la clase de control de la barra de herramientas incluyen obtener el identificador ID del índice del botón del objeto CommandToIndex, obtener el identificador de comando ID o el delimitador GetItemID correspondiente al índice, Obtenga el área rectangular correspondiente al índice GetItemRect, obtenga el estilo del botón GetButtonStyle, establezca el estilo del botón SetButtonStyle, obtenga la identificación de ID del botón - estilo - número de imágenes GetButtonInfo, establezca la identificación de ID del botón - estilo - número de imágenes SetButtonInfo, obtenga el Texto de solicitud del botón GetButtonText, establezca el texto de solicitud del botón SetButtonText y obtenga el control de acceso directo a la barra de herramientas GetToolBarCtrl, etc.
6.2.2 Estructura del objeto del control de la barra de herramientas
6.2.2.1 Método para establecer el control de la barra de herramientas
CToolBarCtrl amp ToolBarCtrl Establecer la estructura del objeto del control de la barra de herramientas
Create crea un objeto de control de barra de herramientas y lo vincula
Clase de control de barra de herramientas CToolBarCtrl::El formato de llamada de Create es el siguiente:
BOOL Create( DWORD dwStyle, const RECTamp ; rect, CWnd* pParentWnd, UINT nID);
El parámetro dwStyle se usa para determinar el estilo del control de la barra de herramientas, y el estilo WS_CHILD debe existir; el parámetro rect se usa para determinar el tamaño y la posición de la barra de herramientas; control; el parámetro pParentWnd Se usa para determinar el puntero de la ventana principal del control de la barra de herramientas, que no puede ser NULL; el parámetro nID se usa para determinar el identificador del control de la barra de herramientas.
Puedes usar WS_CHILD, WS_VISIBLE y WS_DISABLED para configurar el estilo de la ventana de la barra de herramientas, pero el siguiente estilo de control debe configurarse adecuadamente:
CCS_ADJUSTABLE permite al usuario manejar el tamaño de la ventana de la barra de herramientas Si existe una barra de herramientas La ventana debe manejar la información correspondiente
CCS_BOTTOM Hace que el control esté en la parte inferior del área del cliente de la ventana principal y sea tan ancho como la ventana
CCS_NODIVIDER Deshabilita. dibujar una barra resaltada de 2 píxeles en la parte superior del control
p>
CCS_NOHILITE prohíbe dibujar una barra resaltada de 1 píxel en la parte superior del control
CCS_NOMOVEY habilita la el control se alineará automáticamente horizontalmente cuando cambie de tamaño y se mueva. La alineación vertical debe manejar el mensaje WM_SIZE
Si el estilo CCS_NORESIZE es válido, el estilo no es válido
CCS_NOPARENTALIGN prohíbe que el control se alinee automáticamente. moviéndose a la parte superior o inferior de la ventana principal. Si el estilo CCS_TOP o CCS_BOTTOM
es válido, la altura se ajusta al valor predeterminado. El ancho se puede cambiar.
CCS_NORESIZE desactiva el uso. de valores predeterminados de ancho y alto al configurar nuevos tamaños o valores no válidos, y utiliza valores establecidos
CCS_TOP hace que el control se acople automáticamente en la parte superior del área de cliente de la ventana principal y tenga el mismo ancho que la ventana principal ventana
Finalmente, se deben usar los siguientes estilos para controlar la barra de herramientas
TBSTYLE_TOOLTIPS permite que la barra de herramientas cree y administre controles de mensajes dinámicos
TBSTYLE_WRAPABLE habilita los botones de control de la barra de herramientas tiene un formato de disposición de varias líneas
6.2.2.2 Estructura de datos en el control de la barra de herramientas
La estructura de datos más utilizada en el control de la barra de herramientas es TBBUTTON, y su estructura específica es la siguiente:
typedef struct _TBBUTTON {
int iBitmap; //valor del índice de mapa de bits basado en 0
int idCommand //Valor del comando enviado cuando se presiona el botón
p>BYTE fsState; // Estado del botón
BYTE fsStyle; // Estilo del botón
DWORD dwData // Datos definidos por la aplicación
int; iString; // valor de índice de cadena de etiqueta de botón basado en 0
} TBBUTTON;
El valor del estado del botón fsState es el siguiente:
TBSTATE_CHECKED indica que el botón tiene el estilo TBSTYLE_CHECKED y está presionado
TBSTATE_ENABLED indica que el botón puede aceptar entradas; de lo contrario, aparece atenuado y no acepta ninguna entrada
TBSTATE_HIDDEN indica que el botón es invisible y no acepta ninguna entrada
p>
TBSTATE_INDETERMINATE indica que el botón está atenuado
TBSTATE_PRESSED indica que el botón está siendo presionado
TBSTATE_WRAP indica que el botón tiene propiedades de ajuste de línea y el botón debe tener el estado TBSTATE_ENABLED
El estilo del botón puede ser una combinación de los siguientes valores:
TBSTYLE_BUTTON significa crear un estándar botón pulsador
TBSTYLE_CHECK significa crear un botón de verificación de estado
TBSTYLE_CHECKGROUP significa crear verificar el grupo de botones
TBSTYLE_GROUP significa crear un grupo de botones presionados
TBSTYLE_SEP significa crear un botón separador
6.2.2.3 Trabajo
Atributos de clase del control de la barra de herramientas
Los atributos de clase del control de la barra de herramientas están inevitablemente relacionados con juzgar el estado de habilitación del botón IsButtonEnabled, juzgar el estado de verificación del botón IsButtonChecked, juzgar el estado del botón presionado IsButtonPressed, juzgar si el botón está oculto IsButtonHidden Y juzgando el estado gris del botón IsButtonIndeterminate, establece el estado del botón SetState, obtiene el estado del botón GetState, obtiene información relacionada con el botón GetButton, obtiene el número total de botones GetButtonCount, obtiene el área rectangular del botón GetItemRect, establece el tamaño de la estructura del botón SetButtonStructSize, establece el tamaño del botón SetButtonSize, establecer el tamaño del mapa de bits del botón SetBitmapSize, obtener el control de la punta del botón GetToolTips, establecer el control de la punta del botón SetToolTips, etc.
6.2.2.4 Métodos de operación de la clase de control de la barra de herramientas
Los métodos de operación de la clase de control de la barra de herramientas incluyen el botón habilitar EnableButton, el botón de verificación CheckButton, presionar el botón PressButton, ocultar el botón HideButton, el botón gris Indeterminado , agregar el botón AddButtons, insertar el botón InsertButton, eliminar el botón DeleteButton, obtener el índice correspondiente al ID de control CommandToIndex, restaurar el estado de la barra de herramientas RestoreState, guardar el estado de la barra de herramientas SaveState y redeterminar el tamaño de la barra de herramientas AutoSize, etc.