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
)
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 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::DrawItem
CCheckListBox::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
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_NCCREATE
messages , et WM_CREATE
WM_NCCALCSIZE
WM_GETMINMAXINFO
les messages au contrôle case activée list-box.
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 case activée list-box :
WS_CHILD
ToujoursWS_VISIBLE
GénéralementWS_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 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_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 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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour