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 CDialogKlasse), 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

CObject

CCmdTarget

CWnd

CListBox

CCheckListBox

Anforderungen

Headerafxwin.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 CreateKlasseCCheckListBox, 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_USETABSTOPSvon .

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 CCheckListBoxWindows-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 OnNcCreateFunktionen , OnCreate, , OnNcCalcSizeund 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 OnCreateSie z. B. die erforderliche Initialisierung für eine neue Klasse.

Wenden Sie die folgenden Fensterformatvorlagen auf ein Checklistenfeld-Steuerelement an:

  • WS_CHILD Immer

  • WS_VISIBLE Normalerweise

  • WS_DISABLED Selten

  • WS_VSCROLL So fügen Sie eine vertikale Bildlaufleiste hinzu

  • WS_HSCROLL So fügen Sie eine horizontale Bildlaufleiste hinzu

  • WS_GROUP So gruppieren Sie Steuerelemente

  • WS_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 mögliche Werte aufgeführt.

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.

Siehe auch

MFC-Beispiel TSTCON
CListBox Klasse
Hierarchiediagramm