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
)
où 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
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_NCCREATE
contrôle , et WM_CREATE
WM_NCCALCSIZE
WM_GETMINMAXINFO
les messages à la zone de liste de contrôle.
Ces messages sont gérés par défaut par les OnNcCreate
fonctions membres et OnNcCalcSize
OnGetMinMaxInfo
, OnCreate
par 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
ToujoursWS_VISIBLE
HabituellementWS_DISABLED
RarementWS_VSCROLL
Pour ajouter une barre de défilement verticaleWS_HSCROLL
Pour ajouter une barre de défilement horizontaleWS_GROUP
Pour regrouper les contrôlesWS_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.