Share via


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 des case activée Windows et l’attache à l’objetCCheckListBox.
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 case activée.
CCheckListBox::GetCheck Obtient l’état de la zone case activée d’un élément.
CCheckListBox::GetCheckStyle Obtient le style des zones case activée 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 zone de case activée d’un élément.
CCheckListBox::SetCheck Définit l’état de la zone case activée d’un élément.
CCheckListBox::SetCheckStyle Définit le style des zones de case activée du contrôle.

Notes

Une « zone de liste case activée » affiche une liste d’éléments, tels que des noms de fichiers. Chaque élément de la liste comporte une zone case activée en regard de celle-ci que l’utilisateur peut case activée 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 case activée contient des chaînes de texte et des zones case activée, mais vous n’avez pas besoin d’avoir du texte du tout. Par exemple, vous pouvez avoir une liste de petites bitmaps avec une zone case activée en regard de chaque élément.

Pour créer votre propre zone case activée liste, 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_CHKCHANGEL’utilisateur a modifié l’état de la boîte de réception case activée d’un élément.

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

Vous pouvez créer une zone de liste case activée à 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êteafxwin.h:

CCheckListBox::CCheckListBox

Construit un objet CCheckListBox.

CCheckListBox();

Notes

Vous construisez un CCheckListBox objet en deux étapes. Tout d’abord, définissez une classe dérivée de CCheckListBox, puis appelezCreate, qui initialise la zone windows case activée list et l’attache à l’objetCCheckListBox.

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 des case activée Windows et l’attache à l’objetCCheckListBox.

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 case activée. 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 case activée. Peut être un CRect objet ou une RECT structure.

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

nID
Spécifie l’ID de contrôle de la zone case activée list.

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 appelezCreate, qui initialise la zone de liste de case activée Windows et l’attache au CCheckListBox. Consultez CCheckListBox::CCheckListBox un exemple.

Quand Create il s’exécute, Windows envoie les WM_NCCREATEmessages , et WM_CREATEWM_NCCALCSIZEWM_GETMINMAXINFO les messages au contrôle case activée list-box.

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 case activée list-box :

  • WS_CHILD Toujours

  • WS_VISIBLE Généralement

  • 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 case activée 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 case activée box par défaut, composée d’une liste de chaînes chacune avec une zone de case activée dimensionnée par défaut à gauche. La taille de liste case activée box est celle spécifiée dans Create.

Remplacez cette fonction membre pour implémenter le dessin de zones de dessin propriétaire case activée de liste qui ne sont pas les zones par défaut, telles que les zones de liste case activée avec des listes qui ne sont pas des chaînes, avec des éléments à hauteur variable ou avec des case activée box 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 case activée éléments de zone de liste ne sont pas tous de la même hauteur, le style de zone case activée list (spécifié dans Create) doit être LBS_OWNERVARIABLEet vous devez remplacer la MeasureItem fonction.

CCheckListBox::Enable

Appelez cette fonction pour activer ou désactiver un élément de zone de liste case activée.

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

Paramètres

nIndex
Index de l’élément de zone de liste case activée à activer.

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

CCheckListBox::GetCheck

Récupère l’état de la zone de case activée spécifiée.

int GetCheck(int nIndex);

Paramètres

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

Valeur de retour

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

Value Description
BST_CHECKED La boîte case activée est case activée ed.
BST_UNCHECKED La boîte case activée n’est pas case activée.
BST_INDETERMINATE L’état case activée box est indéterminé.

CCheckListBox::GetCheckStyle

Appelez cette fonction pour obtenir le style de la zone de liste case activée.

UINT GetCheckStyle();

Valeur de retour

Style des zones case activée 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 case activée 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 case activée list-box. Si la zone case activée list 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 zone case activée 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 zone case activée d’un élément.

Valeur de retour

Position et taille de la zone case activée d’un élément.

Notes

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

CCheckListBox::SetCheck

Définit l’état de la zone de case activée spécifiée.

void SetCheck(
    int nIndex,
    int nCheck);

Paramètres

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

nCheck
État du bouton pour la zone de case activée 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.

Value Description
BST_CHECKED Sélectionnez la zone de case activée spécifiée.
BST_UNCHECKED Désactivez la zone de case activée spécifiée.
BST_INDETERMINATE Définissez l’état de zone de case activée spécifié sur indéterminé.

Cet état n’est disponible que si le style de zone case activée 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 zones de case activée dans la zone case activée liste.

void SetCheckStyle(UINT nStyle);

Paramètres

nStyle
Détermine le style des zones case activée dans la zone case activée liste.

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