Clase CCheckListBox
Proporciona la funcionalidad de un cuadro de lista de comprobación de Windows.
Sintaxis
class CCheckListBox : public CListBox
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CCheckListBox::CCheckListBox |
Construye un objeto CCheckListBox . |
Métodos públicos
Nombre | Descripción |
---|---|
CCheckListBox::Create |
Crea el cuadro de lista de comprobación de Windows y lo asocia al objeto CCheckListBox . |
CCheckListBox::DrawItem |
Lo llama el marco cuando cambia un aspecto visual de un cuadro de lista dibujado por el propietario. |
CCheckListBox::Enable |
Habilita o deshabilita un elemento de cuadro de lista de comprobación. |
CCheckListBox::GetCheck |
Establece el estado de la casilla de un elemento. |
CCheckListBox::GetCheckStyle |
Obtiene el estilo de las casillas del control. |
CCheckListBox::IsEnabled |
Determina si un elemento está habilitado. |
CCheckListBox::MeasureItem |
El marco llama a este método cuando se crea un cuadro de lista con un estilo dibujado por el propietario. |
CCheckListBox::OnGetCheckPosition |
El marco llama a este método para obtener la posición de la casilla de un elemento. |
CCheckListBox::SetCheck |
Establece el estado de la casilla de un elemento. |
CCheckListBox::SetCheckStyle |
Establece el estilo de las casillas del control. |
Comentarios
Un "cuadro de lista de comprobación" muestra una lista de elementos, como nombres de archivo. Cada elemento de la lista tiene una casilla junto a él que el usuario puede activar o desactivar.
CCheckListBox
solo es para los controles dibujados por el propietario, porque la lista contiene más que cadenas de texto. En su forma más sencilla, un cuadro de lista de comprobación contiene cadenas de texto y casillas, pero no es en absoluto necesario tener texto. Por ejemplo, podría tener una lista de mapas de bits pequeños con una casilla junto a cada elemento.
Para crear su propio cuadro de lista de comprobación, debe derivar su propia clase de CCheckListBox
. Para derivar su propia clase, escriba un constructor para la clase derivada y, a continuación, llame a Create
.
Si desea controlar los mensajes de notificación de Windows enviados por un cuadro de lista a su elemento primario (normalmente una clase derivada de CDialog
), agregue una entrada de mapa de mensajes y una función miembro del controlador de mensajes a la clase primaria para cada mensaje.
Cada entrada de asignación de mensajes tiene la siguiente forma:
ON_Notification ( id
, memberFxn
)
donde id
especifica el id. de la ventana secundaria del control que envía la notificación y memberFxn
es el nombre de la función miembro primaria que se escribió para controlar la notificación.
El prototipo de función principal es el siguiente:
afx_msg void memberFxn();
Solo hay una entrada de mapa de mensajes que pertenece específicamente a CCheckListBox
(pero vea también las entradas de mapa de mensajes para CListBox
):
ON_CLBN_CHKCHANGE
El usuario cambió el estado de la casilla de un elemento.
Si el cuadro de lista de comprobación es un cuadro de lista de comprobación predeterminado (una lista de cadenas con las casillas de tamaño predeterminado a la izquierda de cada una), puede usar el valor predeterminado CCheckListBox::DrawItem
para dibujar el cuadro de lista de comprobación. De lo contrario, debe invalidar la función CListBox::CompareItem
y las funciones CCheckListBox::DrawItem
y CCheckListBox::MeasureItem
.
Puede crear un cuadro de lista de comprobación a partir de una plantilla de diálogo o directamente en el código.
Jerarquía de herencia
CCheckListBox
Requisitos
Encabezado: afxwin.h
CCheckListBox::CCheckListBox
Construye un objeto CCheckListBox
.
CCheckListBox();
Comentarios
El objeto CCheckListBox
se construye en dos pasos. En primer lugar, defina una clase derivada de CCheckListBox
y, a continuación, llame a Create
, que inicializa el cuadro de lista de comprobación de Windows y lo asocia al objeto CCheckListBox
.
Ejemplo
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Crea el cuadro de lista de comprobación de Windows y lo asocia al objeto CCheckListBox
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parámetros
dwStyle
Especifica el estilo del cuadro de lista de comprobación. El estilo debe ser LBS_HASSTRINGS
y LBS_OWNERDRAWFIXED
(todos los elementos de la lista tienen el mismo alto) o LBS_OWNERDRAWVARIABLE
(los elementos de la lista tienen altos diferentes). Este estilo se puede combinar con otros estilos de cuadro de lista, excepto LBS_USETABSTOPS
.
rect
Especifica el tamaño y la posición del cuadro de lista de comprobación. Puede ser un objeto CRect
o una estructura RECT
.
pParentWnd
Especifica la ventana primaria del cuadro de lista de comprobación (por lo general, un objeto CDialog
). No debe ser NULL.
nID
Especifica el identificador de control del cuadro de lista de comprobación.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
El objeto CCheckListBox
se construye en dos pasos. En primer lugar, defina una clase derivada de CcheckListBox
y, a continuación, llame a Create
, que inicializa el cuadro de lista de comprobación de Windows y lo asocia a CCheckListBox
. Para ver un ejemplo, consulte CCheckListBox::CCheckListBox
.
Cuando Create
se ejecuta, Windows envía los mensajes WM_NCCREATE
, WM_CREATE
, WM_NCCALCSIZE
y WM_GETMINMAXINFO
al control de cuadro de lista de comprobación.
Estos mensajes se controlan de forma predeterminada mediante las funciones miembro OnNcCreate
, OnCreate
, OnNcCalcSize
y OnGetMinMaxInfo
de la clase base CWnd
. Para ampliar el control de mensajes predeterminado, agregue una asignación de mensajes a la clase derivada e invalide las funciones miembro del controlador de mensajes anteriores. Invalide OnCreate
, por ejemplo, para realizar la inicialización necesaria para una nueva clase.
Aplique los estilos de ventana siguientes a un control de cuadro de lista de comprobación:
WS_CHILD
SiempreWS_VISIBLE
NormalmenteWS_DISABLED
RaramenteWS_VSCROLL
Para agregar una barra de desplazamiento verticalWS_HSCROLL
Para agregar una barra de desplazamiento horizontalWS_GROUP
Para agrupar controlesWS_TABSTOP
Para permitir el tabulador a este control
CCheckListBox::DrawItem
El marco llama a este método cuando cambia un aspecto visual de un cuadro de lista de comprobación dibujado por el propietario.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parámetros
lpDrawItemStruct
Puntero largo a una estructura DRAWITEMSTRUCT
que contiene información sobre el tipo de dibujo necesario.
Comentarios
Los miembros itemAction
y itemState
de la estructura DRAWITEMSTRUCT
definen la acción de dibujo que se va a realizar.
De manera predeterminada, esta función dibuja una lista de casillas predeterminada, que consta de una lista de cadenas, cada una de las cuales tiene una casilla de tamaño predeterminado a la izquierda. El tamaño de la lista de casillas es el que se especifica en Create
.
Invalide esta función miembro para implementar el dibujo de cuadros de lista de comprobación dibujados por el propietario que no son los predeterminados, como cuadros de lista de comprobación con listas que no son cadenas, con elementos de alto variable o con casillas que no están a la izquierda. La aplicación debe restaurar todos los objetos de la interfaz de dispositivo gráfico (GDI) seleccionados para el contexto de visualización que se proporciona en lpDrawItemStruct
antes de que finalice esta función miembro.
Si los elementos del cuadro de lista de comprobación no tienen el mismo alto, el estilo del cuadro de lista de comprobación (que se especifica en Create
) debe ser LBS_OWNERVARIABLE
y se debe invalidar la función MeasureItem
.
CCheckListBox::Enable
Llame a esta función para habilitar o deshabilitar un elemento de cuadro de lista de comprobación.
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
Parámetros
nIndex
Índice del elemento de cuadro de lista de comprobación que se va a habilitar.
bEnabled
Especifica si el elemento está habilitado o deshabilitado.
CCheckListBox::GetCheck
Recupera el estado de la casilla especificada.
int GetCheck(int nIndex);
Parámetros
nIndex
Índice de base cero de una casilla contenida en el cuadro de lista.
Valor devuelto
Estado de la casilla especificada. En la tabla siguiente, se enumeran los valores posibles.
Valor | Descripción |
---|---|
BST_CHECKED |
La casilla está activada. |
BST_UNCHECKED |
La casilla no está activada. |
BST_INDETERMINATE |
El estado de la casilla es indeterminado. |
CCheckListBox::GetCheckStyle
Llame a esta función para obtener el estilo del cuadro de lista de comprobación.
UINT GetCheckStyle();
Valor devuelto
Estilo de las casillas del control.
Comentarios
Para más información sobre los estilos posibles, consulte SetCheckStyle
.
CCheckListBox::IsEnabled
Llame a esta función para determinar si un elemento está habilitado.
BOOL IsEnabled(int nIndex);
Parámetros
nIndex
Índice del elemento.
Valor devuelto
Distinto de cero si el elemento está habilitado; de lo contrario, 0.
CCheckListBox::MeasureItem
El marco llama a este método cuando se crea un cuadro de lista de comprobación con un estilo no predeterminado.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parámetros
lpMeasureItemStruct
Puntero largo a una estructura MEASUREITEMSTRUCT
.
Comentarios
De manera predeterminada, esta función miembro no hace nada. Invalide esta función miembro y llene la estructura MEASUREITEMSTRUCT
para informar a Windows de las dimensiones de los elementos del cuadro de lista de comprobación. Si el cuadro de lista de comprobación se crea con el estilo LBS_OWNERDRAWVARIABLE
, el marco llama a esta función miembro para cada elemento del cuadro de lista. De lo contrario, solo se llama a este miembro una vez.
CCheckListBox::OnGetCheckPosition
El marco llama a esta función para obtener la posición y el tamaño de la casilla en un elemento.
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
Parámetros
rectItem
Posición y tamaño del elemento de lista.
rectCheckBox
Posición y tamaño predeterminados de la casilla de un elemento.
Valor devuelto
Posición y tamaño de la casilla de un elemento.
Comentarios
La implementación predeterminada solo devuelve la posición y el tamaño predeterminados de la casilla (rectCheckBox
). De manera predeterminada, una casilla está alineada en la esquina superior izquierda de un elemento y tiene el tamaño de casilla estándar. Puede haber casos en los que quiera que las casillas estén a la derecha o que desee una casilla más grande o más pequeña. En estos casos, invalide OnGetCheckPosition
para cambiar la posición y el tamaño de la casilla dentro del elemento.
CCheckListBox::SetCheck
Establece el estado de la casilla especificada.
void SetCheck(
int nIndex,
int nCheck);
Parámetros
nIndex
Índice de base cero de una casilla contenida en el cuadro de lista.
nCheck
Estado del botón de la casilla especificada. Consulte la sección Comentarios para ver los valores posibles.
Comentarios
En la tabla siguiente, se muestran los valores posibles para el parámetro nCheck
.
Valor | Descripción |
---|---|
BST_CHECKED |
Active la casilla especificada. |
BST_UNCHECKED |
Desactive la casilla especificada. |
BST_INDETERMINATE |
Establezca el estado de la casilla especificada como indeterminado. Este estado solo está disponible si el estilo de casilla es BS_AUTO3STATE o BS_3STATE . Para más información, consulte Estilos de botón. |
CCheckListBox::SetCheckStyle
Llame a esta función para establecer el estilo de las casillas en el cuadro de lista de comprobación.
void SetCheckStyle(UINT nStyle);
Parámetros
nStyle
Determina el estilo de las casillas en el cuadro de lista de comprobación.
Comentarios
Los estilos válidos son:
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
Para más información sobre estos estilos, consulte Estilos de botón.