Compartir a través de


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

CObject

CCmdTarget

CWnd

CListBox

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 Siempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Raramente

  • WS_VSCROLL Para agregar una barra de desplazamiento vertical

  • WS_HSCROLL Para agregar una barra de desplazamiento horizontal

  • WS_GROUP Para agrupar controles

  • WS_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_OWNERVARIABLEy 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.

Consulte también

Ejemplo de MFCTSTCON
CListBox (clase)
Gráfico de jerarquías