La classe CCheckListBox

Fournit les fonctionnalités d'une zone de liste de contrôle Windows.

Syntaxe

class CCheckListBox : public CListBox

Membres

Constructeurs publics

Nom Description
CCheckListBox::CCheckListBox Construit un objet CCheckListBox.

Méthodes publiques

Nom Description
CCheckListBox::Create Crée la zone de liste de contrôle Windows et l’attache à l’objet CCheckListBox .
CCheckListBox::DrawItem Appelé par l’infrastructure lorsqu’un aspect visuel d’une zone de liste de dessin propriétaire change.
CCheckListBox::Enable Active ou désactive un élément de zone de liste de contrôle.
CCheckListBox::GetCheck Obtient l’état de la case à cocher d’un élément.
CCheckListBox::GetCheckStyle Obtient le style des cases à cocher du contrôle.
CCheckListBox::IsEnabled Détermine si un élément est activé.
CCheckListBox::MeasureItem Appelé par l’infrastructure lorsqu’une zone de liste avec un style de dessin propriétaire est créée.
CCheckListBox::OnGetCheckPosition Appelé par l’infrastructure pour obtenir la position de la case à cocher d’un élément.
CCheckListBox::SetCheck Définit l’état de la case à cocher d’un élément.
CCheckListBox::SetCheckStyle Définit le style des cases à cocher du contrôle.

Notes

Une « zone de liste de contrôle » affiche une liste d’éléments, tels que des noms de fichiers. Chaque élément de la liste comporte une case à cocher en regard de celle-ci que l’utilisateur peut cocher ou effacer.

CCheckListBox est uniquement destiné aux contrôles dessinés par le propriétaire, car la liste contient plus de chaînes de texte. Au plus simple, une zone de liste de contrôle contient des chaînes de texte et des cases à cocher, mais vous n’avez pas besoin d’avoir du texte du tout. Par exemple, vous pouvez avoir une liste de petites bitmaps avec une case à cocher en regard de chaque élément.

Pour créer votre propre zone de liste de contrôle, vous devez dériver votre propre classe de CCheckListBox. Pour dériver votre propre classe, écrivez un constructeur pour la classe dérivée, puis appelez Create.

Si vous souhaitez gérer les messages de notification Windows envoyés par une zone de liste à son parent (généralement une classe dérivée de CDialog), ajoutez une entrée de mappage de messages et une fonction membre de gestionnaire de messages à la classe parente pour chaque message.

Chaque entrée de carte de messages prend la forme suivante :

ON_Notification ( id, memberFxn )

id spécifie l’ID de fenêtre enfant du contrôle qui envoie la notification et memberFxn est le nom de la fonction membre parente que vous avez écrite pour gérer la notification.

Le prototype de fonction parent est le suivant :

afx_msg void memberFxn();

Il n’existe qu’une seule entrée de carte de messages qui se rapporte spécifiquement à CCheckListBox (mais voir également les entrées de carte de messages pour CListBox) :

  • ON_CLBN_CHKCHANGE L’utilisateur a modifié l’état de la case à cocher d’un élément.

Si votre zone de liste de contrôle est une zone de liste de contrôle par défaut (liste de chaînes avec les cases à cocher par défaut à gauche de chacun), vous pouvez utiliser la valeur par défaut CCheckListBox::DrawItem pour dessiner la zone de liste de contrôle. Sinon, vous devez remplacer la CListBox::CompareItem fonction et les CCheckListBox::DrawItem CCheckListBox::MeasureItem fonctions.

Vous pouvez créer une zone de liste de contrôle à partir d’un modèle de boîte de dialogue ou directement dans votre code.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CListBox

CCheckListBox

Spécifications

En-tête : afxwin.h

CCheckListBox::CCheckListBox

Construit un objet CCheckListBox.

CCheckListBox();

Notes

Vous construisez un CCheckListBox objet en deux étapes. Définissez d’abord une classe dérivée de CCheckListBox, puis appelez Create, qui initialise la zone de liste de contrôle Windows et l’attache à l’objet CCheckListBox .

Exemple

CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
                      CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);

CCheckListBox::Create

Crée la zone de liste de contrôle Windows et l’attache à l’objet CCheckListBox .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Paramètres

dwStyle
Spécifie le style de la zone de liste de contrôle. Le style doit être LBS_HASSTRINGS et soit LBS_OWNERDRAWFIXED (tous les éléments de la liste sont de la même hauteur) ou LBS_OWNERDRAWVARIABLE (les éléments de la liste sont de hauteurs variables). Ce style peut être combiné à d’autres styles de zone de liste, sauf LBS_USETABSTOPS.

rect
Spécifie la taille et la position de la zone de liste de contrôle. Peut être un CRect objet ou une RECT structure.

pParentWnd
Spécifie la fenêtre parente de la zone de liste de contrôle (généralement un CDialog objet). Elle ne doit pas être NULL.

nID
Spécifie l’ID de contrôle de la zone de liste de contrôle.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Vous construisez un CCheckListBox objet en deux étapes. Tout d’abord, définissez une classe dérivée CcheckListBox , puis appelez Create, qui initialise la zone de liste de contrôle Windows et l’attache au CCheckListBox. Consultez CCheckListBox::CCheckListBox un exemple.

Quand Create il s’exécute, Windows envoie le WM_NCCREATEcontrôle , et WM_CREATEWM_NCCALCSIZEWM_GETMINMAXINFO les messages à la zone de liste de contrôle.

Ces messages sont gérés par défaut par les OnNcCreatefonctions membres et OnNcCalcSizeOnGetMinMaxInfo , OnCreatepar défaut, dans la classe de CWnd base. Pour étendre la gestion des messages par défaut, ajoutez un mappage de messages à la classe dérivée et remplacez les fonctions membres du gestionnaire de messages précédentes. Remplacez OnCreate, par exemple, l’initialisation nécessaire pour une nouvelle classe.

Appliquez les styles de fenêtre suivants à un contrôle check-list-box :

  • WS_CHILD Toujours

  • WS_VISIBLE Habituellement

  • WS_DISABLED Rarement

  • WS_VSCROLL Pour ajouter une barre de défilement verticale

  • WS_HSCROLL Pour ajouter une barre de défilement horizontale

  • WS_GROUP Pour regrouper les contrôles

  • WS_TABSTOP Pour autoriser la tabulation à ce contrôle

CCheckListBox::DrawItem

Appelé par l’infrastructure lorsqu’un aspect visuel d’une zone de liste de contrôle dessinée par le propriétaire change.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Paramètres

lpDrawItemStruct
Pointeur long vers une DRAWITEMSTRUCT structure qui contient des informations sur le type de dessin requis.

Notes

Les membres et itemState les itemAction membres de la DRAWITEMSTRUCT structure définissent l’action de dessin à effectuer.

Par défaut, cette fonction dessine une liste de cases à cocher par défaut, composée d’une liste de chaînes chacune avec une case à cocher de taille par défaut à gauche. La taille de liste à cocher est celle spécifiée dans Create.

Remplacez cette fonction membre pour implémenter le dessin de zones de liste de contrôle de dessin propriétaire qui ne sont pas la valeur par défaut, comme les zones de liste de contrôle avec des listes qui ne sont pas des chaînes, avec des éléments à hauteur variable ou avec des cases à cocher qui ne sont pas à gauche. L’application doit restaurer tous les objets GDI (Graphics Device Interface) sélectionnés pour le contexte d’affichage fourni lpDrawItemStruct avant l’arrêt de cette fonction membre.

Si les éléments de zone de liste de contrôle ne sont pas tous de la même hauteur, le style de zone de liste de contrôle (spécifié dans Create) doit être LBS_OWNERVARIABLE, et vous devez remplacer la MeasureItem fonction.

CCheckListBox::Enable

Appelez cette fonction pour activer ou désactiver un élément de zone de liste de contrôle.

void Enable(
    int nIndex,
    BOOL bEnabled = TRUE);

Paramètres

nIndex
Index de l’élément de zone de liste de contrôle à activer.

bEnabled
Spécifie si l’élément est activé ou désactivé.

CCheckListBox::GetCheck

Récupère l’état de la case à cocher spécifiée.

int GetCheck(int nIndex);

Paramètres

nIndex
Index de base zéro d’une case à cocher contenue dans la zone de liste.

Valeur de retour

État de la case à cocher spécifiée. Le tableau suivant répertorie les valeurs possibles.

Valeur Description
BST_CHECKED La case à cocher est cochée.
BST_UNCHECKED La case à cocher n’est pas cochée.
BST_INDETERMINATE L’état de la case à cocher est indéterminé.

CCheckListBox::GetCheckStyle

Appelez cette fonction pour obtenir le style de la zone de liste de contrôle.

UINT GetCheckStyle();

Valeur de retour

Style des cases à cocher du contrôle.

Notes

Pour plus d’informations sur les styles possibles, consultez SetCheckStyle.

CCheckListBox::IsEnabled

Appelez cette fonction pour déterminer si un élément est activé.

BOOL IsEnabled(int nIndex);

Paramètres

nIndex
Index de l’élément.

Valeur de retour

Différent de zéro si l’élément est activé ; sinon 0.

CCheckListBox::MeasureItem

Appelé par l’infrastructure lorsqu’une zone de liste de contrôle avec un style non défini est créée.

virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

Paramètres

lpMeasureItemStruct
Pointeur long vers une MEASUREITEMSTRUCT structure.

Notes

Par défaut, cette fonction membre ne fait rien. Remplacez cette fonction membre et renseignez la MEASUREITEMSTRUCT structure pour informer Windows des dimensions des éléments de liste de contrôle. Si la zone de liste de contrôle est créée avec le LBS_OWNERDRAWVARIABLE style, l’infrastructure appelle cette fonction membre pour chaque élément de la zone de liste. Sinon, ce membre n’est appelé qu’une seule fois.

CCheckListBox::OnGetCheckPosition

L’infrastructure appelle cette fonction pour obtenir la position et la taille de la case à cocher dans un élément.

virtual CRect OnGetCheckPosition(
    CRect rectItem,
    CRect rectCheckBox);

Paramètres

rectItem
Position et taille de l’élément de liste.

rectCheckBox
Position et taille par défaut de la case à cocher d’un élément.

Valeur de retour

Position et taille de la case à cocher d’un élément.

Notes

L’implémentation par défaut retourne uniquement la position et la taille par défaut de la case à cocher (rectCheckBox). Par défaut, une case à cocher est alignée dans le coin supérieur gauche d’un élément et est la taille standard de la case à cocher. Il peut y avoir des cas où vous souhaitez que les cases à cocher soient à droite, ou si vous souhaitez une case à cocher plus grande ou plus petite. Dans ces cas, remplacez OnGetCheckPosition la modification de la position et de la taille de la case à cocher dans l’élément.

CCheckListBox::SetCheck

Définit l’état de la case à cocher spécifiée.

void SetCheck(
    int nIndex,
    int nCheck);

Paramètres

nIndex
Index de base zéro d’une case à cocher contenue dans la zone de liste.

nCheck
État du bouton pour la case à cocher spécifiée. Consultez la section Remarques pour connaître les valeurs possibles.

Notes

Le tableau suivant répertorie les valeurs possibles pour le nCheck paramètre.

Valeur Description
BST_CHECKED Cochez la case spécifiée.
BST_UNCHECKED Désactivez la case à cocher spécifiée.
BST_INDETERMINATE Définissez l’état de la case à cocher spécifiée sur indéterminé.

Cet état est disponible uniquement si le style de case à cocher est BS_AUTO3STATE ou BS_3STATE. Pour plus d’informations, consultez Styles de bouton.

CCheckListBox::SetCheckStyle

Appelez cette fonction pour définir le style des cases à cocher dans la zone de liste de contrôle.

void SetCheckStyle(UINT nStyle);

Paramètres

nStyle
Détermine le style des cases à cocher dans la zone de liste de contrôle.

Notes

Les styles valides sont les suivants :

  • BS_CHECKBOX

  • BS_AUTOCHECKBOX

  • BS_AUTO3STATE

  • BS_3STATE

Pour plus d’informations sur ces styles, consultez Styles de bouton.

Voir aussi

Exemple MFC TSTCON
CListBox Classe
Graphique hiérarchique