CCheckListBox
-Klasse
Stellt die Funktionalität eines Windows-Kontrolllistenfelds bereit.
Syntax
class CCheckListBox : public CListBox
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CCheckListBox::CCheckListBox |
Erstellt ein CCheckListBox -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CCheckListBox::Create |
Erstellt das Windows-Checklistenfeld und fügt es an das CCheckListBox Objekt an. |
CCheckListBox::DrawItem |
Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines Besitzer-Zeichnen-Listenfelds ändert. |
CCheckListBox::Enable |
Aktiviert oder deaktiviert ein Checklistenfeldelement. |
CCheckListBox::GetCheck |
Ruft den Status des Kontrollkästchens eines Elements ab. |
CCheckListBox::GetCheckStyle |
Ruft die Formatvorlage der Kontrollkästchen des Steuerelements ab. |
CCheckListBox::IsEnabled |
Bestimmt, ob ein Element aktiviert ist. |
CCheckListBox::MeasureItem |
Wird vom Framework aufgerufen, wenn ein Listenfeld mit einem Besitzer-Zeichnen-Format erstellt wird. |
CCheckListBox::OnGetCheckPosition |
Vom Framework aufgerufen, um die Position des Kontrollkästchens eines Elements abzurufen. |
CCheckListBox::SetCheck |
Legt den Status des Kontrollkästchens eines Elements fest. |
CCheckListBox::SetCheckStyle |
Legt die Formatvorlage der Kontrollkästchen des Steuerelements fest. |
Hinweise
Ein "Checklistenfeld" zeigt eine Liste von Elementen an, z. B. Dateinamen. Jedes Element in der Liste weist ein Kontrollkästchen daneben auf, das der Benutzer aktivieren oder deaktivieren kann.
CCheckListBox
gilt nur für vom Besitzer gezeichnete Steuerelemente, da die Liste mehr als Textzeichenfolgen enthält. Am einfachsten enthält ein Checklistenfeld Textzeichenfolgen und Kontrollkästchen, aber sie müssen überhaupt keinen Text haben. So könnten Sie beispielsweise eine Liste kleiner Bitmaps mit einem Kontrollkästchen neben jedem Element haben.
Um ein eigenes Checklistenfeld zu erstellen, müssen Sie Ihren eigenen Kurs ableiten von CCheckListBox
. Um Ihre eigene Klasse abzuleiten, schreiben Sie einen Konstruktor für die abgeleitete Klasse, und rufen Sie dann auf Create
.
Wenn Sie Windows-Benachrichtigungen behandeln möchten, die von einem Listenfeld an das übergeordnete Element gesendet werden (in der Regel eine von ihnen abgeleitete CDialog
Klasse), fügen Sie der übergeordneten Klasse für jede Nachricht eine Elementfunktion für nachrichtenzuordnungs- und message-handler-member hinzu.
Jeder Nachrichtenzuordnungseintrag hat die folgende Form:
ON_Notification ( id
, memberFxn
)
dabei id
wird die untergeordnete Fenster-ID des Steuerelements angegeben, das die Benachrichtigung sendet, und memberFxn
der Name der übergeordneten Elementfunktion, die Sie für die Verarbeitung der Benachrichtigung geschrieben haben.
Der Funktionsprototyp des übergeordneten Elements lautet wie folgt:
afx_msg void memberFxn();
Es gibt nur einen Nachrichtenzuordnungseintrag, der sich speziell auf CCheckListBox
(siehe auch die Nachrichtenzuordnungseinträge für CListBox
):
ON_CLBN_CHKCHANGE
Der Benutzer hat den Status des Kontrollkästchens eines Elements geändert.
Wenn es sich bei Ihrem Checklistenfeld um ein Standardmäßiges Checklistenfeld handelt (eine Liste mit Zeichenfolgen mit den standardmäßigen Kontrollkästchen links neben jedem Kontrollkästchen), können Sie das Checklistenfeld standardmäßig CCheckListBox::DrawItem
zeichnen. Andernfalls müssen Sie die CListBox::CompareItem
Funktion und die CCheckListBox::DrawItem
Funktionen CCheckListBox::MeasureItem
überschreiben.
Sie können ein Checklistenfeld entweder aus einer Dialogfeldvorlage oder direkt in Ihrem Code erstellen.
Vererbungshierarchie
CCheckListBox
Anforderungen
Header: afxwin.h
CCheckListBox::CCheckListBox
Erstellt ein CCheckListBox
-Objekt.
CCheckListBox();
Hinweise
Sie erstellen ein CCheckListBox
Objekt in zwei Schritten. Definieren Sie zunächst eine von , dann aufrufende Create
KlasseCCheckListBox
, die das Windows-Checklistenfeld initialisiert und an das CCheckListBox
Objekt anfügt.
Beispiel
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Erstellt das Windows-Checklistenfeld und fügt es an das CCheckListBox
Objekt an.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwStyle
Gibt die Formatvorlage des Checklistenfelds an. Die Formatvorlage muss und entweder sein LBS_HASSTRINGS
und entweder LBS_OWNERDRAWFIXED
(alle Elemente in der Liste sind die gleiche Höhe) oder LBS_OWNERDRAWVARIABLE
(Elemente in der Liste weisen unterschiedliche Höhen auf). Diese Formatvorlage kann mit anderen Listenfeldformatvorlagen kombiniert werden, mit Ausnahme LBS_USETABSTOPS
von .
rect
Gibt die Größe und Position des Checklistenfelds an. Kann ein CRect
Objekt oder eine RECT
Struktur sein.
pParentWnd
Gibt das übergeordnete Fenster des Checklistenfelds an (in der Regel ein CDialog
Objekt). Er darf nicht NULL sein.
nID
Gibt die Steuerelement-ID des Checklistenfelds an.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Sie erstellen ein CCheckListBox
Objekt in zwei Schritten. Definieren Sie zunächst eine von dieser abgeleitete CcheckListBox
Klasse, und rufen Sie dann auf Create
, wodurch das Windows-Checklistenfeld initialisiert und an die CCheckListBox
Windows-Checkliste angefügt wird. Ein Beispiel finden Sie CCheckListBox::CCheckListBox
unter.
Bei Create
ausführung sendet Windows die WM_NCCREATE
, WM_CREATE
, WM_NCCALCSIZE
, und WM_GETMINMAXINFO
Nachrichten an das Checklistenfeld-Steuerelement.
Diese Nachrichten werden standardmäßig von den OnNcCreate
Funktionen , OnCreate
, , OnNcCalcSize
und OnGetMinMaxInfo
Member in der CWnd
Basisklasse behandelt. Um die Standardmäßige Nachrichtenbehandlung zu erweitern, fügen Sie der abgeleiteten Klasse eine Nachrichtenzuordnung hinzu, und überschreiben Sie die vorhergehenden Nachrichtenhandler-Memberfunktionen. Überschreiben OnCreate
Sie z. B. die erforderliche Initialisierung für eine neue Klasse.
Wenden Sie die folgenden Fensterformatvorlagen auf ein Checklistenfeld-Steuerelement an:
WS_CHILD
ImmerWS_VISIBLE
GewöhnlichWS_DISABLED
SeltenWS_VSCROLL
So fügen Sie eine vertikale Bildlaufleiste hinzuWS_HSCROLL
So fügen Sie eine horizontale Bildlaufleiste hinzuWS_GROUP
So gruppieren Sie SteuerelementeWS_TABSTOP
So lassen Sie die Tabulatortaste für dieses Steuerelement zu
CCheckListBox::DrawItem
Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines vom Besitzer gezeichneten Checklistenfelds ändert.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parameter
lpDrawItemStruct
Ein langer Zeiger auf eine DRAWITEMSTRUCT
Struktur, die Informationen zum erforderlichen Zeichnungstyp enthält.
Hinweise
Die itemAction
Elemente itemState
der DRAWITEMSTRUCT
Struktur definieren die Zeichnungsaktion, die ausgeführt werden soll.
Standardmäßig zeichnet diese Funktion eine Standardmäßige Kontrollkästchenliste, die aus einer Liste von Zeichenfolgen besteht, die jeweils ein Kontrollkästchen in Standardgröße links enthält. Die Größe der Kontrollkästchenliste ist die in Create
.
Überschreiben Sie diese Memberfunktion, um die Zeichnung von Checklistenfeldern mit Besitzerzeichnung zu implementieren, die nicht die Standardeinstellung sind, z. B. Checklistenfelder mit Listen, die keine Zeichenfolgen sind, mit Elementen mit variabler Höhe oder mit Kontrollkästchen, die sich nicht auf der linken Seite befinden. Die Anwendung sollte alle GDI-Objekte (Graphics Device Interface) wiederherstellen, die für den anzeigekontext ausgewählt lpDrawItemStruct
wurden, bevor diese Memberfunktion beendet wird.
Wenn Checklistenfeldelemente nicht alle die gleiche Höhe aufweisen, muss das Checklistenfeldformat (in Create
) angegeben sein LBS_OWNERVARIABLE
, und Sie müssen die MeasureItem
Funktion überschreiben.
CCheckListBox::Enable
Rufen Sie diese Funktion auf, um ein Checklistenfeldelement zu aktivieren oder zu deaktivieren.
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
Parameter
nIndex
Index des zu aktivierenden Checklistenfeldelements.
bEnabled
Gibt an, ob das Element aktiviert oder deaktiviert ist.
CCheckListBox::GetCheck
Ruft den Status des angegebenen Kontrollkästchens ab.
int GetCheck(int nIndex);
Parameter
nIndex
Nullbasierter Index eines Kontrollkästchens, das im Listenfeld enthalten ist.
Rückgabewert
Der Status des angegebenen Kontrollkästchens. In der folgenden Tabelle sind die möglichen Werte aufgelistet.
Wert | Beschreibung |
---|---|
BST_CHECKED |
Das Kontrollkästchen ist aktiviert. |
BST_UNCHECKED |
Das Kontrollkästchen ist nicht aktiviert. |
BST_INDETERMINATE |
Der Kontrollkästchenstatus ist unbestimmt. |
CCheckListBox::GetCheckStyle
Rufen Sie diese Funktion auf, um den Stil des Checklistenfelds abzurufen.
UINT GetCheckStyle();
Rückgabewert
Die Formatvorlage der Kontrollkästchen des Steuerelements.
Hinweise
Informationen zu möglichen Formatvorlagen finden Sie unter SetCheckStyle
.
CCheckListBox::IsEnabled
Rufen Sie diese Funktion auf, um zu bestimmen, ob ein Element aktiviert ist.
BOOL IsEnabled(int nIndex);
Parameter
nIndex
Index des Elements.
Rückgabewert
Nonzero, wenn das Element aktiviert ist; andernfalls 0.
CCheckListBox::MeasureItem
Wird vom Framework aufgerufen, wenn ein Checklistenfeld mit einer nicht standardmäßigen Formatvorlage erstellt wird.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parameter
lpMeasureItemStruct
Ein langer Zeiger auf eine MEASUREITEMSTRUCT
Struktur.
Hinweise
Standardmäßig führt diese Memberfunktion nichts aus. Überschreiben Sie diese Memberfunktion, und füllen Sie die MEASUREITEMSTRUCT
Struktur aus, um Windows über die Dimensionen von Checklistenfeldelementen zu informieren. Wenn das Checklistenfeld mit der LBS_OWNERDRAWVARIABLE
Formatvorlage erstellt wird, ruft das Framework diese Memberfunktion für jedes Element im Listenfeld auf. Andernfalls wird dieses Element nur einmal aufgerufen.
CCheckListBox::OnGetCheckPosition
Das Framework ruft diese Funktion auf, um die Position und Größe des Kontrollkästchens in einem Element abzurufen.
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
Parameter
rectItem
Die Position und Größe des Listenelements.
rectCheckBox
Die Standardposition und Größe des Kontrollkästchens eines Elements.
Rückgabewert
Die Position und Größe des Kontrollkästchens eines Elements.
Hinweise
Die Standardimplementierung gibt nur die Standardposition und größe des Kontrollkästchens (rectCheckBox
) zurück. Standardmäßig wird ein Kontrollkästchen in der oberen linken Ecke eines Elements ausgerichtet und ist die Standardgröße des Kontrollkästchens. Es kann Vorkommen geben, in denen Sie die Kontrollkästchen auf der rechten Seite oder ein größeres oder kleineres Kontrollkästchen verwenden möchten. In diesen Fällen setzen Sie außer Kraft OnGetCheckPosition
, um die Position und Größe des Kontrollkästchens innerhalb des Elements zu ändern.
CCheckListBox::SetCheck
Legt den Status des angegebenen Kontrollkästchens fest.
void SetCheck(
int nIndex,
int nCheck);
Parameter
nIndex
Nullbasierter Index eines Kontrollkästchens, das im Listenfeld enthalten ist.
nCheck
Der Schaltflächenstatus für das angegebene Kontrollkästchen. Mögliche Werte finden Sie im Abschnitt Anmerkungen.
Hinweise
In der folgenden Tabelle sind mögliche Werte für den nCheck
Parameter aufgeführt.
Wert | Beschreibung |
---|---|
BST_CHECKED |
Aktivieren Sie das angegebene Kontrollkästchen. |
BST_UNCHECKED |
Deaktivieren Sie das angegebene Kontrollkästchen. |
BST_INDETERMINATE |
Legen Sie den angegebenen Kontrollkästchenstatus auf unbestimmt fest. Dieser Zustand ist nur verfügbar, wenn die Formatvorlage BS_AUTO3STATE des Kontrollkästchens oder BS_3STATE . Weitere Informationen finden Sie unter Schaltflächenformatvorlagen. |
CCheckListBox::SetCheckStyle
Rufen Sie diese Funktion auf, um die Formatvorlage von Kontrollkästchen im Checklistenfeld festzulegen.
void SetCheckStyle(UINT nStyle);
Parameter
nStyle
Bestimmt das Format von Kontrollkästchen im Checklistenfeld.
Hinweise
Gültige Formatvorlagen sind:
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
Informationen zu diesen Formatvorlagen finden Sie unter Schaltflächenformatvorlagen.