Teilen über


CListBox-Klasse

Stellt die Funktionalität eines Windows-Listenfelds bereit.

Syntax

class CListBox : public CWnd

Member

Öffentliche Konstruktoren

Name Beschreibung
CListBox::CListBox Erstellt ein CListBox-Objekt.

Öffentliche Methoden

Name Beschreibung
CListBox::AddString Fügt einem Listenfeld eine Zeichenfolge hinzu.
CListBox::CharToItem Überschreiben, um eine benutzerdefinierte WM_CHAR Behandlung für Besitzer-Zeichnen-Listenfelder bereitzustellen, für die keine Zeichenfolgen vorhanden sind.
CListBox::CompareItem Wird vom Framework aufgerufen, um die Position eines neuen Elements in einem sortierten Listenfeld für Besitzer-Zeichnen zu bestimmen.
CListBox::Create Erstellt das Windows-Listenfeld und fügt es an das CListBox Objekt an.
CListBox::DeleteItem Wird vom Framework aufgerufen, wenn der Benutzer ein Element aus einem Listenfeld "Besitzer zeichnen" löscht.
CListBox::DeleteString Löscht eine Zeichenfolge aus einem Listenfeld.
CListBox::Dir Fügt Dateinamen, Laufwerke oder beide aus dem aktuellen Verzeichnis zu einem Listenfeld hinzu.
CListBox::DrawItem Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines Besitzer-Zeichnen-Listenfelds ändert.
CListBox::FindString Sucht in einem Listenfeld nach einer Zeichenfolge.
CListBox::FindStringExact Sucht die erste Listenfeldzeichenfolge, die einer angegebenen Zeichenfolge entspricht.
CListBox::GetAnchorIndex Ruft den nullbasierten Index des aktuellen Ankerelements in einem Listenfeld ab.
CListBox::GetCaretIndex Bestimmt den Index des Elements, das das Fokusrechteck in einem Listenfeld mit Mehrfachauswahl aufweist.
CListBox::GetCount Gibt die Anzahl der Zeichenfolgen in einem Listenfeld zurück.
CListBox::GetCurSel Gibt den nullbasierten Index der aktuell ausgewählten Zeichenfolge in einem Listenfeld zurück.
CListBox::GetHorizontalExtent Gibt die Breite in Pixeln zurück, in denen ein Listenfeld horizontal gescrollt werden kann.
CListBox::GetItemData Gibt einen Wert zurück, der dem Listenfeldelement zugeordnet ist.
CListBox::GetItemDataPtr Gibt einen Zeiger auf ein Listenfeldelement zurück.
CListBox::GetItemHeight Bestimmt die Höhe von Elementen in einem Listenfeld.
CListBox::GetItemRect Gibt das umgebende Rechteck des Listenfeldelements zurück, wie es derzeit angezeigt wird.
CListBox::GetListBoxInfo Ruft die Anzahl der Elemente pro Spalte ab.
CListBox::GetLocale Ruft den Gebietsschemabezeichner für ein Listenfeld ab.
CListBox::GetSel Gibt den Auswahlstatus eines Listenfeldelements zurück.
CListBox::GetSelCount Gibt die Anzahl der Zeichenfolgen zurück, die derzeit in einem Listenfeld mit Mehrfachauswahl ausgewählt sind.
CListBox::GetSelItems Gibt die Indizes der Zeichenfolgen zurück, die derzeit in einem Listenfeld ausgewählt sind.
CListBox::GetText Kopiert ein Listenfeldelement in einen Puffer.
CListBox::GetTextLen Gibt die Länge in Byte eines Listenfeldelements zurück.
CListBox::GetTopIndex Gibt den Index der ersten sichtbaren Zeichenfolge in einem Listenfeld zurück.
CListBox::InitStorage Stellt Speicherblöcke für Listenfeldelemente und Zeichenfolgen vor.
CListBox::InsertString Fügt eine Zeichenfolge an einer bestimmten Position in ein Listenfeld ein.
CListBox::ItemFromPoint Gibt den Index des Listenfeldelements zurück, das einem Punkt am nächsten liegt.
CListBox::MeasureItem Wird vom Framework aufgerufen, wenn ein Besitzer-Zeichnen-Listenfeld erstellt wird, um Listenfelddimensionen zu bestimmen.
CListBox::ResetContent Löscht alle Einträge aus einem Listenfeld.
CListBox::SelectString Sucht nach einer Zeichenfolge in einem Listenfeld mit einer Auswahl und wählt sie aus.
CListBox::SelItemRange Markiert oder deaktiviert einen Bereich von Zeichenfolgen in einem Listenfeld mit mehrfacher Auswahl.
CListBox::SetAnchorIndex Legt den Anker in einem Listenfeld für Mehrfachauswahl fest, um eine erweiterte Auswahl zu beginnen.
CListBox::SetCaretIndex Legt das Fokusrechteck auf das Element am angegebenen Index in einem Listenfeld mit Mehrfachauswahl fest.
CListBox::SetColumnWidth Legt die Spaltenbreite eines mehrspaltigen Listenfelds fest.
CListBox::SetCurSel Wählt eine Listenfeldzeichenfolge aus.
CListBox::SetHorizontalExtent Legt die Breite in Pixeln fest, in denen ein Listenfeld horizontal gescrollt werden kann.
CListBox::SetItemData Legt einen Wert fest, der dem Listenfeldelement zugeordnet ist.
CListBox::SetItemDataPtr Legt einen Zeiger auf das Listenfeldelement fest.
CListBox::SetItemHeight Legt die Höhe von Elementen in einem Listenfeld fest.
CListBox::SetLocale Legt den Gebietsschemabezeichner für ein Listenfeld fest.
CListBox::SetSel Wählt ein Listenfeldelement in einem Listenfeld-Listenfeld aus oder deaktiviert es.
CListBox::SetTabStops Legt die Tabstopppositionen in einem Listenfeld fest.
CListBox::SetTopIndex Legt den nullbasierten Index der ersten sichtbaren Zeichenfolge in einem Listenfeld fest.
CListBox::VKeyToItem Überschreiben, um benutzerdefinierte WM_KEYDOWN Behandlung für Listenfelder mit dem LBS_WANTKEYBOARDINPUT Formatvorlagensatz bereitzustellen.

Hinweise

In einem Listenfeld wird eine Liste von Elementen angezeigt, z. B. Dateinamen, die der Benutzer anzeigen und auswählen kann.

In einem Listenfeld mit einer Auswahl kann der Benutzer nur ein Element auswählen. In einem Listenfeld mit Mehrfachauswahl kann ein Elementbereich ausgewählt werden. Wenn der Benutzer ein Element auswählt, wird es hervorgehoben, und das Listenfeld sendet eine Benachrichtigung an das übergeordnete Fenster.

Sie können ein Listenfeld entweder aus einer Dialogfeldvorlage oder direkt in Ihrem Code erstellen. Um es direkt zu erstellen, erstellen Sie das CListBox Objekt, und rufen Sie dann die Create Memberfunktion auf, um das Windows-Listenfeld-Steuerelement zu erstellen und es an das CListBox Objekt anzufügen. Um ein Listenfeld in einer Dialogfeldvorlage zu verwenden, deklarieren Sie eine Listenfeldvariable in Ihrer Dialogfeldklasse, und verwenden Sie DDX_Control dann die Funktion Ihrer Dialogfeldklasse DoDataExchange , um die Membervariable mit dem Steuerelement zu verbinden. (Dies geschieht automatisch, wenn Sie ihrer Dialogfeldklasse eine Steuerelementvariable hinzufügen.)

Die Konstruktion kann ein einstufiger Prozess in einer Klasse sein, die von CListBox. Schreiben Sie einen Konstruktor für die abgeleitete Klasse und den Aufruf Create innerhalb des Konstruktors.

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 Listenfeld-Steuerelements angegeben, das die Benachrichtigung sendet, und memberFxn der Name der übergeordneten Elementfunktion, die Sie zum Behandeln der Benachrichtigung geschrieben haben.

Der Funktionsprototyp des übergeordneten Elements lautet wie folgt:

afx_msg void memberFxn( );

Nachfolgend finden Sie eine Liste potenzieller Nachrichtenzuordnungseinträge und eine Beschreibung der Fälle, in denen sie an das übergeordnete Element gesendet werden:

  • ON_LBN_DBLCLK Der Benutzer doppelklicken auf eine Zeichenfolge in einem Listenfeld. Nur ein Listenfeld mit der LBS_NOTIFY Formatvorlage sendet diese Benachrichtigung.

  • ON_LBN_ERRSPACE Das Listenfeld kann nicht genügend Arbeitsspeicher zuweisen, um die Anforderung zu erfüllen.

  • ON_LBN_KILLFOCUS Das Listenfeld verliert den Eingabefokus.

  • ON_LBN_SELCANCEL Die aktuelle Listenfeldauswahl wird abgebrochen. Diese Nachricht wird nur gesendet, wenn ein Listenfeld die LBS_NOTIFY Formatvorlage aufweist.

  • ON_LBN_SELCHANGE Die Auswahl im Listenfeld wurde geändert. Diese Benachrichtigung wird nicht gesendet, wenn die Auswahl von der CListBox::SetCurSel Memberfunktion geändert wird. Diese Benachrichtigung gilt nur für ein Listenfeld mit der LBS_NOTIFY Formatvorlage. Die LBN_SELCHANGE Benachrichtigung wird für ein Listenfeld mit Mehrfachauswahl gesendet, wenn der Benutzer eine Pfeiltaste drückt, auch wenn sich die Auswahl nicht ändert.

  • ON_LBN_SETFOCUS Das Listenfeld empfängt den Eingabefokus.

  • ON_WM_CHARTOITEM Ein Listenfeld mit Besitzer-Zeichnen, das keine Zeichenfolgen enthält, empfängt eine WM_CHAR Nachricht.

  • ON_WM_VKEYTOITEM Ein Listenfeld mit der LBS_WANTKEYBOARDINPUT Formatvorlage empfängt eine WM_KEYDOWN Nachricht.

Wenn Sie ein CListBox Objekt in einem Dialogfeld (über eine Dialogressource) erstellen, wird das CListBox Objekt automatisch zerstört, wenn der Benutzer das Dialogfeld schließt.

Wenn Sie ein Objekt innerhalb eines CListBox Fensters erstellen, müssen Sie das CListBox Objekt möglicherweise zerstören. Wenn Sie das CListBox Objekt auf dem Stapel erstellen, wird es automatisch zerstört. Wenn Sie das CListBox Objekt auf dem Heap mithilfe der new Funktion erstellen, müssen Sie das Objekt aufrufen delete , um es zu zerstören, wenn der Benutzer das übergeordnete Fenster schließt.

Wenn Sie speicher CListBox im Objekt zuordnen, überschreiben Sie den CListBox Destruktor, um die Zuordnung zu löschen.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CListBox

Anforderungen

Header: afxwin.h

CListBox::AddString

Fügt einem Listenfeld eine Zeichenfolge hinzu.

int AddString(LPCTSTR lpszItem);

Parameter

lpszItem
Verweist auf die mit Null beendete Zeichenfolge, die hinzugefügt werden soll.

Rückgabewert

Der nullbasierte Index für die Zeichenfolge im Listenfeld. Der Rückgabewert ist, wenn ein Fehler auftritt. Der Rückgabewert ist LB_ERR LB_ERRSPACE , wenn nicht genügend Speicherplatz zum Speichern der neuen Zeichenfolge verfügbar ist.

Hinweise

Wenn das Listenfeld nicht mit der LBS_SORT Formatvorlage erstellt wurde, wird die Zeichenfolge am Ende der Liste hinzugefügt. Andernfalls wird die Zeichenfolge in die Liste eingefügt, und die Liste wird sortiert. Wenn das Listenfeld mit der LBS_SORT Formatvorlage, aber nicht mit der LBS_HASSTRINGS Formatvorlage erstellt wurde, sortiert das Framework die Liste nach einem oder mehreren Aufrufen der CompareItem Memberfunktion.

Dient InsertString zum Einfügen einer Zeichenfolge an eine bestimmte Position innerhalb des Listenfelds.

Beispiel

// Add 10 items to the list box.
CString str;
for (int i = 0; i < 10; i++)
{
   str.Format(_T("item string %d"), i);
   m_myListBox.AddString(str);
}

CListBox::CharToItem

Wird vom Framework aufgerufen, wenn das übergeordnete Fenster des Listenfelds eine WM_CHARTOITEM Nachricht aus dem Listenfeld empfängt.

virtual int CharToItem(
    UINT nKey,
    UINT nIndex);

Parameter

nKey
Der ANSI-Code des Zeichens, das der Benutzer eingegeben hat.

nIndex
Die aktuelle Position des Listenfeld-Caret.

Rückgabewert

Gibt - 1 oder - 2 für keine weitere Aktion oder eine nichtnegative Zahl zurück, um einen Index eines Listenfeldelements anzugeben, für das die Standardaktion für den Tastenanschlag ausgeführt werden soll. Die Standardimplementierung gibt - 1 zurück.

Hinweise

Die WM_CHARTOITEM Nachricht wird vom Listenfeld gesendet, wenn sie eine WM_CHAR Nachricht empfängt, aber nur, wenn das Listenfeld alle diese Kriterien erfüllt:

  • Ist ein Listenfeld für Besitzer-Zeichnen.

  • Verfügt nicht über den LBS_HASSTRINGS Formatvorlagensatz.

  • Verfügt über mindestens ein Element.

Sie sollten diese Funktion niemals selbst aufrufen. Überschreiben Sie diese Funktion, um ihre eigene benutzerdefinierte Behandlung von Tastaturnachrichten bereitzustellen.

In Ihrer Außerkraftsetzung müssen Sie einen Wert zurückgeben, um dem Framework mitzuteilen, welche Aktion Sie ausgeführt haben. Ein Rückgabewert von - 1 oder - 2 gibt an, dass Sie alle Aspekte der Auswahl des Elements behandelt haben und keine weitere Aktion durch das Listenfeld erfordert. Bevor Sie - 1 oder - 2 zurückgeben, können Sie die Markierung festlegen oder das Caret oder beides verschieben. Um die Auswahl festzulegen, verwenden SetCurSel oder SetSel. Um das Caret zu verschieben, verwenden Sie SetCaretIndex.

Ein Rückgabewert von 0 oder höher gibt den Index eines Elements im Listenfeld an und gibt an, dass das Listenfeld die Standardaktion für die Tastatureingabe für das angegebene Element ausführen soll.

Beispiel

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example moves the caret down one item on a numeric key and up one item
// on an alphabetic key. The list box control was created with the
// following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::CharToItem(UINT nChar, UINT nIndex)
{
   // On a numeric key, move the caret up one item.
   if (isdigit(nChar) && (nIndex > 0))
   {
      SetCaretIndex(nIndex - 1);
   }
   // On an alphabetic key, move the caret down one item.
   else if (isalpha(nChar) && (nIndex < (UINT)GetCount()))
   {
      SetCaretIndex(nIndex + 1);
   }

   // Do not perform any default processing.
   return -1;
}

CListBox::CListBox

Erstellt ein CListBox-Objekt.

CListBox();

Hinweise

Sie erstellen ein CListBox Objekt in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, und rufen Sie ihn dann aufCreate, wodurch das Windows-Listenfeld initialisiert und an die CListBoxKonstruktor ClistBox angefügt wird.

Beispiel

// Declare a local CListBox object.
CListBox myListBox;

// Declare a dynamic CListBox object.
CListBox *pmyListBox = new CListBox;

CListBox::CompareItem

Wird vom Framework aufgerufen, um die relative Position eines neuen Elements in einem sortierten Listenfeld für Besitzer-Zeichnen zu bestimmen.

virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);

Parameter

lpCompareItemStruct
Ein langer Zeiger auf eine COMPAREITEMSTRUCT Struktur.

Rückgabewert

Gibt die relative Position der beiden in der COMPAREITEMSTRUCT Struktur beschriebenen Elemente an. Dabei kann es sich um einen der folgenden Werte handeln:

Wert Bedeutung
-1 Element 1 sortiert vor Element 2.
0 Element 1 und Element 2 sortieren gleich.
1 Element 1 sortiert nach Element 2.

Eine Beschreibung der Struktur finden Sie unter.See CWnd::OnCompareItem for a description of the COMPAREITEMSTRUCT structure.

Hinweise

Standardmäßig führt diese Memberfunktion nichts aus. Wenn Sie ein Listenfeld "Besitzer-Zeichnen" mit der LBS_SORT Formatvorlage erstellen, müssen Sie diese Memberfunktion außer Kraft setzen, um das Framework beim Sortieren neuer Elemente zu unterstützen, die dem Listenfeld hinzugefügt wurden.

Beispiel

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example compares two items using _tcscmp to sort items in reverse
// alphabetical order. The list box control was created with the
// following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
   ASSERT(lpCompareItemStruct->CtlType == ODT_LISTBOX);
   LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
   ASSERT(lpszText1 != NULL);
   LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
   ASSERT(lpszText2 != NULL);

   return _tcscmp(lpszText2, lpszText1);
}

CListBox::Create

Erstellt das Windows-Listenfeld und fügt es an das CListBox Objekt an.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parameter

dwStyle
Gibt die Formatvorlage des Listenfelds an. Wenden Sie eine beliebige Kombination von Listenfeldformatvorlagen auf das Feld an.

rect
Gibt die Größe und Position des Listenfelds an. Kann ein CRect Objekt oder eine RECT Struktur sein.

pParentWnd
Gibt das übergeordnete Fenster des Listenfelds an (in der Regel ein CDialog Objekt). Es darf nicht sein NULL.

nID
Gibt die Steuerelement-ID des Listenfelds an.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Sie erstellen ein CListBox Objekt in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, und rufen Sie ihn dann auf Create, wodurch das Windows-Listenfeld initialisiert und an das CListBox Objekt angefügt wird.

Bei Create Ausführung sendet Windows die WM_NCCREATENachrichten , WM_CREATE, WM_NCCALCSIZEund WM_GETMINMAXINFO die Nachrichten an das Listenfeld-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, leiten Sie eine Klasse ab CListBox, fügen Sie der neuen Klasse eine Nachrichtenzuordnung hinzu, und überschreiben Sie die vorherigen Nachrichtenhandler-Memberfunktionen. Überschreiben OnCreateSie z. B. die erforderliche Initialisierung für eine neue Klasse.

Wenden Sie die folgenden Fensterformatvorlagen auf ein Listenfeld-Steuerelement an.

  • WS_CHILD Immer

  • WS_VISIBLE Gewöhnlich

  • 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

Beispiel

// pParentWnd is a pointer to the parent window.
m_myListBox.Create(WS_CHILD | WS_VISIBLE | LBS_STANDARD | WS_HSCROLL,
                   CRect(10, 10, 200, 200), pParentWnd, IDC_MYLISTBOX);

CListBox::DeleteItem

Wird vom Framework aufgerufen, wenn der Benutzer ein Element aus einem Besitzer-Draw-Objekt CListBox löscht oder das Listenfeld zerstört.

virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);

Parameter

lpDeleteItemStruct
Ein langer Zeiger auf eine Windows-Struktur DELETEITEMSTRUCT , die Informationen zum gelöschten Element enthält.

Hinweise

Bei der Standardimplementierung dieser Funktion wird keine Aktion ausgeführt. Überschreiben Sie diese Funktion, um ein Listenfeld für Besitzer-Zeichnen nach Bedarf neu zu zeichnen.

Eine Beschreibung der Struktur finden Sie unter.See CWnd::OnDeleteItem for a description of the DELETEITEMSTRUCT structure.

Beispiel

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example simply frees the item's text. The list box control was created
// with the following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
void CMyODListBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
   ASSERT(lpDeleteItemStruct->CtlType == ODT_LISTBOX);
   LPVOID lpszText = (LPVOID)lpDeleteItemStruct->itemData;
   ASSERT(lpszText != NULL);

   free(lpszText);

   CListBox::DeleteItem(lpDeleteItemStruct);
}

CListBox::DeleteString

Löscht das Element in position nIndex aus dem Listenfeld.

int DeleteString(UINT nIndex);

Parameter

nIndex
Gibt den nullbasierten Index der zu löschenden Zeichenfolge an.

Rückgabewert

Eine Anzahl der Zeichenfolgen, die in der Liste verbleiben. Der Rückgabewert ist LB_ERR , wenn nIndex ein Index größer als die Anzahl der Elemente in der Liste ist.

Hinweise

Alle elemente, die jetzt folgen, nIndex bewegen sich um eine Position nach unten. Wenn z. B. ein Listenfeld zwei Elemente enthält, bewirkt das Löschen des ersten Elements, dass sich das verbleibende Element jetzt an der ersten Position befindet. nIndex=0 für das Element an der ersten Position.

Beispiel

// Delete every other item from the list box.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.DeleteString(i);
}

CListBox::Dir

Fügt eine Liste von Dateinamen, Laufwerken oder beides zu einem Listenfeld hinzu.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Parameter

attr
Dabei kann es sich um eine beliebige Kombination der enum in CFile::GetStatus, oder eine beliebige Kombination der folgenden Werte handeln:

Wert Bedeutung
0x0000 Die Datei kann ausgelesen oder in diese geschrieben werden.
0x0001 Datei kann gelesen, aber nicht in.
0x0002 Die Datei ist ausgeblendet und wird nicht in einer Verzeichnisauflistung angezeigt.
0x0004 Datei ist eine Systemdatei.
0x0010 Der durch lpszWildCard die Angabe angegebene Name gibt ein Verzeichnis an.
0x0020 Die Datei wurde archiviert.
0x4000 Schließen Sie alle Laufwerke ein, die dem namen entsprechen, der durch lpszWildCard.
0x8000 Exklusive Kennzeichnung. Wenn das exklusive Flag festgelegt ist, werden nur Dateien des angegebenen Typs aufgelistet. Andernfalls werden Dateien des angegebenen Typs zusätzlich zu "normalen" Dateien aufgeführt.

lpszWildCard
Verweist auf eine Dateispezifikationszeichenfolge. Die Zeichenfolge kann Wildcards enthalten (z. B. *.*).

Rückgabewert

Der nullbasierte Index des Nachnamens, der der Liste hinzugefügt wurde. Der Rückgabewert ist, wenn ein Fehler auftritt. Der Rückgabewert ist LB_ERR LB_ERRSPACE , wenn nicht genügend Speicherplatz zum Speichern der neuen Zeichenfolgen verfügbar ist.

Beispiel

// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
::GetWindowsDirectory(lpszWinPath, MAX_PATH);

::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);

m_myListBox.ResetContent();
m_myListBox.Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));

::SetCurrentDirectory(lpszOldPath);

CListBox::DrawItem

Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines Besitzer-Zeichnen-Listenfelds ä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 führt diese Memberfunktion nichts aus. Überschreiben Sie diese Memberfunktion, um die Zeichnung für ein Besitzer-Draw-Objekt CListBox zu implementieren. Die Anwendung sollte alle GDI-Objekte (Graphics Device Interface) wiederherstellen, die für den angezeigten Kontext ausgewählt lpDrawItemStruct sind, bevor diese Memberfunktion beendet wird.

Eine Beschreibung der Struktur finden Sie unter.See CWnd::OnDrawItem for a description of the DRAWITEMSTRUCT structure.

Beispiel

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example draws an item's text centered vertically and horizontally. The
// list box control was created with the following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
void CMyODListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   ASSERT(lpDrawItemStruct->CtlType == ODT_LISTBOX);
   LPCTSTR lpszText = (LPCTSTR)lpDrawItemStruct->itemData;
   ASSERT(lpszText != NULL);
   CDC dc;

   dc.Attach(lpDrawItemStruct->hDC);

   // Save these value to restore them when done drawing.
   COLORREF crOldTextColor = dc.GetTextColor();
   COLORREF crOldBkColor = dc.GetBkColor();

   // If this item is selected, set the background color
   // and the text color to appropriate values. Also, erase
   // rect by filling it with the background color.
   if ((lpDrawItemStruct->itemAction | ODA_SELECT) &&
       (lpDrawItemStruct->itemState & ODS_SELECTED))
   {
      dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
      dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
      dc.FillSolidRect(&lpDrawItemStruct->rcItem,
                       ::GetSysColor(COLOR_HIGHLIGHT));
   }
   else
   {
      dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
   }

   // If this item has the focus, draw a red frame around the
   // item's rect.
   if ((lpDrawItemStruct->itemAction | ODA_FOCUS) &&
       (lpDrawItemStruct->itemState & ODS_FOCUS))
   {
      CBrush br(RGB(255, 0, 0));
      dc.FrameRect(&lpDrawItemStruct->rcItem, &br);
   }

   // Draw the text.
   dc.DrawText(
       lpszText,
       (int)_tcslen(lpszText),
       &lpDrawItemStruct->rcItem,
       DT_CENTER | DT_SINGLELINE | DT_VCENTER);

   // Reset the background color and the text color back to their
   // original values.
   dc.SetTextColor(crOldTextColor);
   dc.SetBkColor(crOldBkColor);

   dc.Detach();
}

CListBox::FindString

Sucht die erste Zeichenfolge in einem Listenfeld, das das angegebene Präfix enthält, ohne die Listenfeldauswahl zu ändern.

int FindString(
    int nStartAfter,
    LPCTSTR lpszItem) const;

Parameter

nStartAfter
Enthält den nullbasierten Index des Elements, bevor das erste Element durchsucht werden soll. Wenn die Suche das Ende des Listenfelds erreicht, wird sie vom oberen Rand des Listenfelds zurück zum durch nStartAfterdie Liste angegebenen Element fortgesetzt. Wenn nStartAfter -1 ist, wird das gesamte Listenfeld von Anfang an durchsucht.

lpszItem
Verweist auf die mit Null beendete Zeichenfolge, die das präfix enthält, nach dem gesucht werden soll. Die Suche ist unabhängig, sodass diese Zeichenfolge eine beliebige Kombination aus Groß- und Kleinbuchstaben enthalten kann.

Rückgabewert

Der nullbasierte Index des übereinstimmenden Elements oder LB_ERR wenn die Suche nicht erfolgreich war.

Hinweise

Verwenden Sie die SelectString Memberfunktion, um eine Zeichenfolge zu suchen und auszuwählen.

Beispiel

// The string to match.
LPCTSTR lpszmyString = _T("item");

// Delete all items that begin with the specified string.
int nIndex = 0;
while ((nIndex = m_myListBox.FindString(nIndex, lpszmyString)) != LB_ERR)
{
   m_myListBox.DeleteString(nIndex);
}

CListBox::FindStringExact

Sucht die erste Listenfeldzeichenfolge, die der in lpszFind.

int FindStringExact(
    int nIndexStart,
    LPCTSTR lpszFind) const;

Parameter

nIndexStart
Gibt den nullbasierten Index des Elements an, bevor das erste Element durchsucht werden soll. Wenn die Suche das Ende des Listenfelds erreicht, wird sie vom oberen Rand des Listenfelds zurück zum durch nIndexStartdie Liste angegebenen Element fortgesetzt. Wenn nIndexStart -1 ist, wird das gesamte Listenfeld von Anfang an durchsucht.

lpszFind
Verweist auf die mit Null beendete Zeichenfolge, nach der gesucht werden soll. Diese Zeichenfolge kann einen vollständigen Dateinamen enthalten, einschließlich der Erweiterung. Bei der Suche wird die Groß-/Kleinschreibung nicht beachtet, sodass die Zeichenfolge eine beliebige Kombination aus Groß- und Kleinbuchstaben enthalten kann.

Rückgabewert

Der Index des übereinstimmenden Elements oder LB_ERR wenn die Suche nicht erfolgreich war.

Hinweise

Wenn das Listenfeld mit einem Besitzer-Zeichnen-Format erstellt wurde, aber ohne formatvorlage LBS_HASSTRINGS , versucht die FindStringExact Memberfunktion, den Doubleword-Wert mit dem Wert von lpszFind.

Beispiel

// The string to match.
LPCTSTR lpszmyString = _T("item string 3");

// Delete all items that exactly match the specified string.
int nIndex = 0;
while ((nIndex = m_myListBox.FindStringExact(nIndex, lpszmyString)) != LB_ERR)
{
   m_myListBox.DeleteString(nIndex);
}

CListBox::GetAnchorIndex

Ruft den nullbasierten Index des aktuellen Ankerelements im Listenfeld ab.

int GetAnchorIndex() const;

Rückgabewert

Der Index des aktuellen Ankerelements, falls erfolgreich; andernfalls LB_ERR.

Hinweise

In einem Listenfeld mit Mehrfachauswahl ist das Ankerelement das erste oder letzte Element in einem Block zusammenhängender ausgewählter Elemente.

Beispiel

Ein Beispiel hierfür finden Sie unter CListBox::SetAnchorIndex.

CListBox::GetCaretIndex

Bestimmt den Index des Elements, das das Fokusrechteck in einem Listenfeld mit Mehrfachauswahl aufweist.

int GetCaretIndex() const;

Rückgabewert

Der nullbasierte Index des Elements, das das Fokusrechteck in einem Listenfeld enthält. Wenn es sich bei dem Listenfeld um ein Listenfeld mit einer Auswahl handelt, ist der Rückgabewert der Index des ausgewählten Elements, falls vorhanden.

Hinweise

Das Element kann ausgewählt oder nicht ausgewählt werden.

Beispiel

Ein Beispiel hierfür finden Sie unter CListBox::SetCaretIndex.

CListBox::GetCount

Ruft die Anzahl der Elemente in einem Listenfeld ab.

int GetCount() const;

Rückgabewert

Die Anzahl der Elemente im Listenfeld oder LB_ERR wenn ein Fehler auftritt.

Hinweise

Die zurückgegebene Anzahl ist eine größer als der Indexwert des letzten Elements (der Index ist nullbasiert).

Beispiel

// Add 10 items to the list box.
CString str;
for (int i = 0; i < 10; i++)
{
   str.Format(_T("item %d"), i);
   m_myListBox.AddString(str);
}

// Verify that 10 items were added to the list box.
ASSERT(m_myListBox.GetCount() == 10);

CListBox::GetCurSel

Ruft den nullbasierten Index des aktuell ausgewählten Elements (sofern vorhanden) in einem Listenfeld mit einer Auswahl ab.

int GetCurSel() const;

Rückgabewert

Der nullbasierte Index des aktuell ausgewählten Elements, wenn es sich um ein Listenfeld mit einer Auswahl handelt. LB_ERR Wenn derzeit kein Element ausgewählt ist.

In einem Listenfeld mit Mehrfachauswahl wird der Index des Elements mit dem Fokus angezeigt.

Hinweise

Rufen Sie GetCurSel kein Listenfeld für Mehrfachauswahl auf. Verwenden Sie stattdessen CListBox::GetSelItems.

Beispiel

// Select the next item of the currently selected one.
int nIndex = m_myListBox.GetCurSel();
int nCount = m_myListBox.GetCount();
if ((nIndex != LB_ERR) && (nCount > 1))
{
   if (++nIndex < nCount)
      m_myListBox.SetCurSel(nIndex);
   else
      m_myListBox.SetCurSel(0);
}

CListBox::GetHorizontalExtent

Ruft aus dem Listenfeld die Breite in Pixeln ab, um die es horizontal gescrollt werden kann.

int GetHorizontalExtent() const;

Rückgabewert

Die bildlauffähige Breite des Listenfelds in Pixel.

Hinweise

Dies gilt nur, wenn das Listenfeld über eine horizontale Bildlaufleiste verfügt.

Beispiel

// Find the longest string in the list box.
CString str;
CSize sz;
int dx = 0;
CDC *pDC = m_myListBox.GetDC();
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   if (sz.cx > dx)
      dx = sz.cx;
}
m_myListBox.ReleaseDC(pDC);

// Set the horizontal extent only if the current extent is not large enough.
if (m_myListBox.GetHorizontalExtent() < dx)
{
   m_myListBox.SetHorizontalExtent(dx);
   ASSERT(m_myListBox.GetHorizontalExtent() == dx);
}

CListBox::GetItemData

Ruft den vom Anwendung bereitgestellten Doubleword-Wert ab, der dem angegebenen Listenfeldelement zugeordnet ist.

DWORD_PTR GetItemData(int nIndex) const;

Parameter

nIndex
Gibt den nullbasierten Index des Elements im Listenfeld an.

Rückgabewert

Der dem Element zugeordnete Wert oder LB_ERR wenn ein Fehler auftritt.

Hinweise

Der Doubleword-Wert war der dwItemData Parameter eines Aufrufs SetItemData .

Beispiel

// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   if (m_myListBox.GetItemData(i) == 0)
   {
      m_myListBox.SetItemData(i, (DWORD)-1);
   }
}

CListBox::GetItemDataPtr

Ruft den vom Anwendung bereitgestellten 32-Bit-Wert ab, der dem angegebenen Listenfeldelement als Zeiger (void *) zugeordnet ist.

void* GetItemDataPtr(int nIndex) const;

Parameter

nIndex
Gibt den nullbasierten Index des Elements im Listenfeld an.

Rückgabewert

Ruft einen Zeiger oder -1 ab, wenn ein Fehler auftritt.

Beispiel

LPVOID lpmyPtr = pParentWnd;

// Check all the items in the list box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   if (m_myListBox.GetItemDataPtr(i) == lpmyPtr)
   {
      m_myListBox.SetItemDataPtr(i, NULL);
   }
}

CListBox::GetItemHeight

Bestimmt die Höhe von Elementen in einem Listenfeld.

int GetItemHeight(int nIndex) const;

Parameter

nIndex
Gibt den nullbasierten Index des Elements im Listenfeld an. Dieser Parameter wird nur verwendet, wenn das Listenfeld die LBS_OWNERDRAWVARIABLE Formatvorlage aufweist. Andernfalls sollte er auf 0 festgelegt werden.

Rückgabewert

Die Höhe der Elemente im Listenfeld in Pixel. Wenn das Listenfeld die LBS_OWNERDRAWVARIABLE Formatvorlage aufweist, ist der Rückgabewert die Höhe des durch nIndex. Wenn ein Fehler auftritt, lautet LB_ERRder Rückgabewert .

Beispiel

// Set the height of every item so the item
// is completely visible.
CString str;
CSize sz;
CDC *pDC = m_myListBox.GetDC();
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   // Only want to set the item height if the current height
   // is not big enough.
   if (m_myListBox.GetItemHeight(i) < sz.cy)
      m_myListBox.SetItemHeight(i, sz.cy);
}
m_myListBox.ReleaseDC(pDC);

CListBox::GetItemRect

Ruft die Abmessungen des Rechtecks ab, das ein Listenfeldelement begrenzt, wie es derzeit im Listenfeldfenster angezeigt wird.

int GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Parameter

nIndex
Gibt den nullbasierten Index des Elements an.

lpRect
Gibt einen langen Zeiger auf eine RECT Struktur an, die die Clientkoordinaten des Listenfelds des Elements empfängt.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Beispiel

// Dump all of the items bounds.
CString str;
RECT r;
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetItemRect(i, &r);

   str.Format(_T("item %d: left = %d, top = %d, right = %d, ")
              _T("bottom = %d\r\n"),
              i,
              r.left,
              r.top,
              r.right,
              r.bottom);
   AFXDUMP(str);
}

CListBox::GetListBoxInfo

Ruft die Anzahl der Elemente pro Spalte ab.

DWORD GetListBoxInfo() const;

Rückgabewert

Anzahl der Elemente pro Spalte des CListBox Objekts.

Hinweise

Diese Memberfunktion emuliert die Funktionalität der LB_GETLISTBOXINFO Nachricht, wie im Windows SDK beschrieben.

CListBox::GetLocale

Ruft das gebietsschema ab, das vom Listenfeld verwendet wird.

LCID GetLocale() const;

Rückgabewert

Der Gebietsschemabezeichnerwert (LCID) für die Zeichenfolgen im Listenfeld.

Hinweise

Das Gebietsschema wird beispielsweise verwendet, um die Sortierreihenfolge der Zeichenfolgen in einem sortierten Listenfeld zu bestimmen.

Beispiel

Ein Beispiel hierfür finden Sie unter CListBox::SetLocale.

CListBox::GetSel

Ruft den Auswahlstatus eines Elements ab.

int GetSel(int nIndex) const;

Parameter

nIndex
Gibt den nullbasierten Index des Elements an.

Rückgabewert

Eine positive Zahl, wenn das angegebene Element ausgewählt ist; andernfalls ist es 0. Der Rückgabewert ist LB_ERR , wenn ein Fehler auftritt.

Hinweise

Diese Memberfunktion funktioniert sowohl mit Listenfeldern mit einfacher als auch mit mehrfacher Auswahl.

Um den Index des aktuell ausgewählten Listenfeldelements abzurufen, verwenden Sie CListBox::GetCurSel.

Beispiel

// Dump all of the items select state.
CString str;
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   str.Format(_T("item %d: select state is %s\r\n"),
              i,
              m_myListBox.GetSel(i) > 0 ? _T("true") : _T("false"));
   AFXDUMP(str);
}

CListBox::GetSelCount

Ruft die Gesamtanzahl der ausgewählten Elemente in einem Listenfeld mit Mehrfachauswahl ab.

int GetSelCount() const;

Rückgabewert

Die Anzahl der ausgewählten Elemente in einem Listenfeld. Wenn das Listenfeld ein Listenfeld mit einer Auswahl ist, lautet LB_ERRder Rückgabewert .

Beispiel

Ein Beispiel hierfür finden Sie unter CListBox::GetSelItems.

CListBox::GetSelItems

Füllt einen Puffer mit einem Array ganzzahliger Zahlen, die die Elementnummern ausgewählter Elemente in einem Listenfeld mit Mehrfachauswahl angibt.

int GetSelItems(
    int nMaxItems,
    LPINT rgIndex) const;

Parameter

nMaxItems
Gibt die maximale Anzahl der ausgewählten Elemente an, deren Elementnummern im Puffer platziert werden sollen.

rgIndex
Gibt einen Zeiger auf einen Puffer an, der groß genug für die Anzahl der ganzzahligen Zahlen ist, die durch nMaxItems.

Rückgabewert

Die tatsächliche Anzahl der Im Puffer platzierten Elemente. Wenn das Listenfeld ein Listenfeld mit einer Auswahl ist, lautet LB_ERRder Rückgabewert .

Beispiel

// Get the indexes of all the selected items.
int nCount = m_myODListBox.GetSelCount();
CArray<int, int> aryListBoxSel;

aryListBoxSel.SetSize(nCount);
m_myODListBox.GetSelItems(nCount, aryListBoxSel.GetData());

// Dump the selection array.
AFXDUMP(aryListBoxSel);

CListBox::GetText

Ruft eine Zeichenfolge aus einem Listenfeld ab.

int GetText(
    int nIndex,
    LPTSTR lpszBuffer) const;

void GetText(
    int nIndex,
    CString& rString) const;

Parameter

nIndex
Gibt den nullbasierten Index der abzurufenden Zeichenfolge an.

lpszBuffer
Verweist auf den Puffer, der die Zeichenfolge empfängt. Der Puffer muss über ausreichend Speicherplatz für die Zeichenfolge und ein endendes NULL-Zeichen verfügen. Die Größe der Zeichenfolge kann vorab durch Aufrufen der GetTextLen Memberfunktion bestimmt werden.

rString
Ein Verweis auf ein CString-Objekt.

Rückgabewert

Die Länge (in Byte) der Zeichenfolge, mit Ausnahme des endenden Nullzeichens. Wenn nIndex kein gültiger Index angegeben wird, lautet LB_ERRder Rückgabewert .

Hinweise

Die zweite Form dieser Memberfunktion füllt ein CString Objekt mit dem Zeichenfolgentext aus.

Beispiel

// Dump all of the items in the list box.
CString str, str2;
int n;
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   n = m_myListBox.GetTextLen(i);
   m_myListBox.GetText(i, str.GetBuffer(n));
   str.ReleaseBuffer();

   str2.Format(_T("item %d: %s\r\n"), i, str.GetBuffer(0));
   AFXDUMP(str2);
}

CListBox::GetTextLen

Ruft die Länge einer Zeichenfolge in einem Listenfeldelement ab.

int GetTextLen(int nIndex) const;

Parameter

nIndex
Gibt den nullbasierten Index der Zeichenfolge an.

Rückgabewert

Die Länge der Zeichenfolge in Zeichen, mit Ausnahme des endenden Nullzeichens. Wenn nIndex kein gültiger Index angegeben wird, lautet LB_ERRder Rückgabewert .

Beispiel

Ein Beispiel hierfür finden Sie unter CListBox::GetText.

CListBox::GetTopIndex

Ruft den nullbasierten Index des ersten sichtbaren Elements in einem Listenfeld ab.

int GetTopIndex() const;

Rückgabewert

Der nullbasierte Index des ersten sichtbaren Elements in einem Listenfeld, falls erfolgreich, LB_ERR andernfalls.

Hinweise

Anfangs befindet sich Element 0 am Anfang des Listenfelds, aber wenn das Listenfeld gescrollt wird, befindet sich möglicherweise ein weiteres Element oben.

Beispiel

// Want an item in the bottom half to be the first visible item.
int n = m_myListBox.GetCount() / 2;
if (m_myListBox.GetTopIndex() < n)
{
   m_myListBox.SetTopIndex(n);
   ASSERT(m_myListBox.GetTopIndex() == n);
}

CListBox::InitStorage

Ordnet Speicher zum Speichern von Listenfeldelementen zu.

int InitStorage(
    int nItems,
    UINT nBytes);

Parameter

nItems
Gibt die Anzahl der hinzuzufügenden Elemente an.

nBytes
Gibt die Speichermenge in Bytes an, die für Elementzeichenfolgen zugewiesen werden soll.

Rückgabewert

Bei erfolgreicher Ausführung kann die maximale Anzahl von Elementen, die im Listenfeld gespeichert werden können, bevor eine Speicherinteilung erforderlich ist, andernfalls LB_ERRSPACEist nicht genügend Arbeitsspeicher verfügbar.

Hinweise

Rufen Sie diese Funktion auf, bevor Sie einer großen Anzahl von Elementen hinzufügen CListBox.

Diese Funktion beschleunigt die Initialisierung von Listenfeldern mit einer großen Anzahl von Elementen (mehr als 100). Es wird die angegebene Speichermenge vorverteilt, sodass nachfolgende AddString, InsertStringund Dir Funktionen die kürzeste Zeit in Anspruch nehmen. Sie können Schätzungen für die Parameter verwenden. Wenn Sie die Überschätzung überschätzen, werden zusätzlichen Arbeitsspeicher zugewiesen. wenn Sie unterschätzen, wird die normale Zuordnung für Elemente verwendet, die den vorallocated-Betrag überschreiten.

Nur Windows 95/98: Der nItems Parameter ist auf 16-Bit-Werte beschränkt. Dies bedeutet, dass Listenfelder nicht mehr als 32.767 Elemente enthalten dürfen. Obwohl die Anzahl der Elemente eingeschränkt ist, ist die Gesamtgröße der Elemente in einem Listenfeld nur durch den verfügbaren Arbeitsspeicher begrenzt.

Beispiel

// Initialize the storage of the list box to be 256 strings with
// about 10 characters per string, performance improvement.
int n = m_myListBox.InitStorage(256, 16 * sizeof(TCHAR));
ASSERT(n != LB_ERRSPACE);

// Add 256 items to the list box.
CString str;
for (int i = 0; i < 256; i++)
{
   str.Format(_T("item string %d"), i);
   m_myListBox.AddString(str);
}

CListBox::InsertString

Fügt eine Zeichenfolge in das Listenfeld ein.

int InsertString(
    int nIndex,
    LPCTSTR lpszItem);

Parameter

nIndex
Gibt den nullbasierten Index der Position an, an der die Zeichenfolge eingefügt werden soll. Wenn dieser Parameter -1 ist, wird die Zeichenfolge am Ende der Liste hinzugefügt.

lpszItem
Zeigt auf die einzufügende nullterminierte Zeichenfolge.

Rückgabewert

Der nullbasierte Index der Position, an der die Zeichenfolge eingefügt wurde. Der Rückgabewert ist, wenn ein Fehler auftritt. Der Rückgabewert ist LB_ERR LB_ERRSPACE , wenn nicht genügend Speicherplatz zum Speichern der neuen Zeichenfolge verfügbar ist.

Hinweise

AddString Im Gegensatz zur Memberfunktion InsertString wird keine Liste mit der LBS_SORT Formatvorlage sortiert.

Beispiel

// Insert items in between existing items.
CString str;
int n = m_myListBox.GetCount();
for (int i = 0; i < n; i++)
{
   str.Format(_T("item string %c"), (char)('A' + i));
   m_myListBox.InsertString(2 * i, str);
}

CListBox::ItemFromPoint

Bestimmt das Listenfeldelement, das dem in der Datei ptangegebenen Punkt am nächsten liegt.

UINT ItemFromPoint(
    CPoint pt,
    BOOL& bOutside) const;

Parameter

pt
Punkt, für den das nächste Element gefunden werden soll, angegeben relativ zur oberen linken Ecke des Clientbereichs des Listenfelds.

bOutside
Verweis auf eine BOOL Variable, die festgelegt TRUE wird, wenn pt sich außerhalb des Clientbereichs des Listenfelds befindet, FALSE wenn pt sich der Clientbereich des Listenfelds befindet.

Rückgabewert

Der Index des nächstgelegenen Elements zum angegebenen ptPunkt.

Hinweise

Mit dieser Funktion können Sie bestimmen, welches Listenfeldelement der Mauszeiger bewegt.

Beispiel

Ein Beispiel hierfür finden Sie unter CListBox::SetAnchorIndex.

CListBox::MeasureItem

Wird vom Framework aufgerufen, wenn ein Listenfeld mit einem Besitzer-Zeichnen-Format 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 Abmessungen des Listenfelds zu informieren. Wenn das Listenfeld 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.

Weitere Informationen zur Verwendung des LBS_OWNERDRAWFIXED Stils in einem Listenfeld mit Besitzer-Zeichnen, das mit der SubclassDlgItem Memberfunktion CWnderstellt wurde, finden Sie in der Diskussion in Technical Note 14.

Eine Beschreibung der Struktur finden Sie unter.See CWnd::OnMeasureItem for a description of the MEASUREITEMSTRUCT structure.

Beispiel

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The list box control was created with the
// following code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
void CMyODListBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
   ASSERT(lpMeasureItemStruct->CtlType == ODT_LISTBOX);
   LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
   ASSERT(lpszText != NULL);
   CSize sz;
   CDC *pDC = GetDC();

   sz = pDC->GetTextExtent(lpszText);

   ReleaseDC(pDC);

   lpMeasureItemStruct->itemHeight = 2 * sz.cy;
}

CListBox::ResetContent

Entfernt alle Elemente aus einem Listenfeld.

void ResetContent();

Beispiel

// Delete all the items from the list box.
m_myListBox.ResetContent();
ASSERT(m_myListBox.GetCount() == 0);

CListBox::SelectString

Sucht nach einem Listenfeldelement, das der angegebenen Zeichenfolge entspricht, und wenn ein übereinstimmende Element gefunden wird, wird das Element ausgewählt.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszItem);

Parameter

nStartAfter
Enthält den nullbasierten Index des Elements, bevor das erste Element durchsucht werden soll. Wenn die Suche das Ende des Listenfelds erreicht, wird sie vom oberen Rand des Listenfelds zurück zum durch nStartAfterdie Liste angegebenen Element fortgesetzt. Wenn nStartAfter -1 ist, wird das gesamte Listenfeld von Anfang an durchsucht.

lpszItem
Verweist auf die mit Null beendete Zeichenfolge, die das präfix enthält, nach dem gesucht werden soll. Die Suche ist unabhängig, sodass diese Zeichenfolge eine beliebige Kombination aus Groß- und Kleinbuchstaben enthalten kann.

Rückgabewert

Der Index des ausgewählten Elements, wenn die Suche erfolgreich war. Wenn die Suche nicht erfolgreich war, lautet LB_ERR der Rückgabewert und die aktuelle Auswahl wird nicht geändert.

Hinweise

Das Listenfeld wird bei Bedarf gescrollt, um das ausgewählte Element in die Ansicht zu bringen.

Diese Memberfunktion kann nicht mit einem Listenfeld verwendet werden, das die LBS_MULTIPLESEL Formatvorlage aufweist.

Ein Element wird nur ausgewählt, wenn die Anfangszeichen (vom Anfangspunkt) mit den Zeichen in der Zeichenfolge übereinstimmen, die durch lpszItem.

Verwenden Sie die FindString Memberfunktion, um eine Zeichenfolge zu finden, ohne das Element auszuwählen.

Beispiel

// The string to match.
LPCTSTR lpszmyString = _T("item 5");

// Select the item that begins with the specified string.
int nIndex = m_myListBox.SelectString(0, lpszmyString);
ASSERT(nIndex != LB_ERR);

CListBox::SelItemRange

Markiert mehrere aufeinander folgende Elemente in einem Listenfeld mit mehrfacher Auswahl.

int SelItemRange(
    BOOL bSelect,
    int nFirstItem,
    int nLastItem);

Parameter

bSelect
Gibt an, wie die Auswahl festgelegt wird. Wenn ja, wird TRUEdie Zeichenfolge ausgewählt und hervorgehoben. WennFALSEbSelect, wird die Hervorhebung entfernt, und die Zeichenfolge wird nicht mehr ausgewählt.

nFirstItem
Gibt den nullbasierten Index des ersten festzulegenden Elements an.

nLastItem
Gibt den nullbasierten Index des letzten festzulegenden Elements an.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Hinweise

Verwenden Sie diese Memberfunktion nur für Listenfelder mit mehrfacher Auswahl. Wenn Sie nur ein Element in einem Listenfeld mit mehrfacher Auswahl auswählen müssen , d. h. falls nFirstItem gleich nLastItem , rufen Sie stattdessen die SetSel Memberfunktion auf.

Beispiel

// Select half of the items.
m_myODListBox.SelItemRange(TRUE, 0, m_myODListBox.GetCount() / 2);

CListBox::SetAnchorIndex

Legt den Anker in einem Listenfeld für Mehrfachauswahl fest, um eine erweiterte Auswahl zu beginnen.

void SetAnchorIndex(int nIndex);

Parameter

nIndex
Gibt den nullbasierten Index des Listenfeldelements an, das der Anker ist.

Hinweise

In einem Listenfeld mit Mehrfachauswahl ist das Ankerelement das erste oder letzte Element in einem Block zusammenhängender ausgewählter Elemente.

Beispiel

void CMyODListBox::OnLButtonDown(UINT nFlags, CPoint point)
{
   BOOL bOutside = TRUE;
   UINT uItem = ItemFromPoint(point, bOutside);

   if (!bOutside)
   {
      // Set the anchor to be the middle item.
      SetAnchorIndex(uItem);
      ASSERT((UINT)GetAnchorIndex() == uItem);
   }

   CListBox::OnLButtonDown(nFlags, point);
}

CListBox::SetCaretIndex

Legt das Fokusrechteck auf das Element am angegebenen Index in einem Listenfeld mit Mehrfachauswahl fest.

int SetCaretIndex(
    int nIndex,
    BOOL bScroll = TRUE);

Parameter

nIndex
Gibt den nullbasierten Index des Elements an, um das Fokusrechteck im Listenfeld zu erhalten.

bScroll
Wenn dieser Wert 0 ist, wird das Element so lange gescrollt, bis es vollständig sichtbar ist. Wenn dieser Wert nicht 0 ist, wird das Element scrollen, bis es mindestens teilweise sichtbar ist.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Hinweise

Wenn das Element nicht sichtbar ist, wird es in die Ansicht gescrollt.

Beispiel

// Set the caret to be the middle item.
m_myListBox.SetCaretIndex(m_myListBox.GetCount() / 2);
ASSERT(m_myListBox.GetCaretIndex() == m_myListBox.GetCount() / 2);

CListBox::SetColumnWidth

Legt die Breite in Pixeln aller Spalten in einem mehrspaltigen Listenfeld fest (erstellt mit der LBS_MULTICOLUMN Formatvorlage).

void SetColumnWidth(int cxWidth);

Parameter

cxWidth
Gibt die Breite in Pixeln aller Spalten an.

Beispiel

// Find the pixel width of the largest item.
CString str;
CSize   sz;
int     dx = 0;
CDC* pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
   myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   if (sz.cx > dx)
      dx = sz.cx;
}
myListBox.ReleaseDC(pDC);

// Set the column width of the first column to be one and 1/3 units
// of the largest string. 
myListBox.SetColumnWidth(dx * 4 / 3);

CListBox::SetCurSel

Wählt eine Zeichenfolge aus und scrollt bei Bedarf in die Ansicht.

int SetCurSel(int nSelect);

Parameter

nSelect
Gibt den nullbasierten Index der Zeichenfolge an, die ausgewählt werden soll. Wenn nSelect -1 ist, ist das Listenfeld so eingestellt, dass keine Auswahl vorhanden ist.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Hinweise

Wenn die neue Zeichenfolge ausgewählt ist, entfernt das Listenfeld die Hervorhebung aus der zuvor ausgewählten Zeichenfolge.

Verwenden Sie diese Memberfunktion nur für Listenfelder mit einer Auswahl.

Um eine Auswahl in einem Listenfeld mit mehrfacher Auswahl festzulegen oder zu entfernen, verwenden Sie CListBox::SetSel.

Beispiel

// Select the last item in the list box.
int nCount = m_myListBox.GetCount();
if (nCount > 0)
   m_myListBox.SetCurSel(nCount - 1);

CListBox::SetHorizontalExtent

Legt die Breite in Pixel fest, um die ein Listenfeld horizontal gescrollt werden kann.

void SetHorizontalExtent(int cxExtent);

Parameter

cxExtent
Gibt die Anzahl der Pixel an, um die das Listenfeld horizontal scrollen kann.

Hinweise

Wenn die Größe des Listenfelds kleiner als dieser Wert ist, führt die horizontale Bildlaufleiste einen horizontalen Bildlauf durch Elemente im Listenfeld aus. Wenn das Listenfeld so groß oder größer als dieser Wert ist, wird die horizontale Bildlaufleiste ausgeblendet.

Um auf einen Aufruf SetHorizontalExtentzu reagieren, muss das Listenfeld mit der WS_HSCROLL Formatvorlage definiert worden sein.

Diese Memberfunktion ist für mehrspaltige Listenfelder nicht nützlich. Rufen Sie für mehrspaltige Listenfelder die SetColumnWidth Memberfunktion auf.

Beispiel

// Find the longest string in the list box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_myListBox.GetDC();
CFont *pFont = m_myListBox.GetFont();

// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);

for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   // Add the avg width to prevent clipping
   sz.cx += tm.tmAveCharWidth;

   if (sz.cx > dx)
      dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_myListBox.ReleaseDC(pDC);

// Set the horizontal extent so every character of all strings
// can be scrolled to.
m_myListBox.SetHorizontalExtent(dx);

CListBox::SetItemData

Legt einen Wert fest, der dem angegebenen Element in einem Listenfeld zugeordnet ist.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Parameter

nIndex
Gibt den nullbasierten Index des Elements an.

dwItemData
Gibt den Wert an, der dem Element zugeordnet werden soll.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Beispiel

// Set the data of each item to be equal to its index.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.SetItemData(i, i);
}

CListBox::SetItemDataPtr

Legt den dem angegebenen Element in einem Listenfeld zugeordneten 32-Bit-Wert auf den angegebenen Zeiger ( void *) fest.

int SetItemDataPtr(
    int nIndex,
    void* pData);

Parameter

nIndex
Gibt den nullbasierten Index des Elements an.

pData
Gibt den Zeiger an, der dem Element zugeordnet werden soll.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Hinweise

Dieser Zeiger bleibt gültig für die Lebensdauer des Listenfelds, auch wenn sich die relative Position des Elements innerhalb des Listenfelds ändern kann, wenn Elemente hinzugefügt oder entfernt werden. Daher kann sich der Index des Elements innerhalb des Felds ändern, aber der Zeiger bleibt zuverlässig.

Beispiel

// Set the data pointer of each item to be NULL.
for (int i = 0; i < m_myListBox.GetCount(); i++)
{
   m_myListBox.SetItemDataPtr(i, NULL);
}

CListBox::SetItemHeight

Legt die Höhe von Elementen in einem Listenfeld fest.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Parameter

nIndex
Gibt den nullbasierten Index des Elements im Listenfeld an. Dieser Parameter wird nur verwendet, wenn das Listenfeld die LBS_OWNERDRAWVARIABLE Formatvorlage aufweist. Andernfalls sollte er auf 0 festgelegt werden.

cyItemHeight
Gibt die Höhe des Elements in Pixel an.

Rückgabewert

LB_ERR wenn der Index oder die Höhe ungültig ist.

Hinweise

Wenn das Listenfeld die LBS_OWNERDRAWVARIABLE Formatvorlage aufweist, legt diese Funktion die Höhe des durch nIndex. Andernfalls legt diese Funktion die Höhe aller Elemente im Listenfeld fest.

Beispiel

// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
   myListBox.GetText(i, str);
   sz = pDC->GetTextExtent(str);

   myListBox.SetItemHeight(i, sz.cy);
}
myListBox.ReleaseDC(pDC);

CListBox::SetLocale

Legt den Gebietsschemabezeichner für dieses Listenfeld fest.

LCID SetLocale(LCID nNewLocale);

Parameter

nNewLocale
Der neue LCID-Wert (Locale Identifier), der für das Listenfeld festgelegt werden soll.

Rückgabewert

Der vorherige Gebietsschemabezeichnerwert (LCID) für dieses Listenfeld.

Hinweise

Wird SetLocale das Standardgebietsschema nicht aufgerufen, wird das Standardgebietsschema vom System abgerufen. Dieses Systemstandardgebietsschema kann mithilfe der regionalen (oder internationalen) Anwendung Systemsteuerung geändert werden.

Beispiel

// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
                       SORT_DEFAULT);

// Force the list box to use my locale.
m_myListBox.SetLocale(mylcid);
ASSERT(m_myListBox.GetLocale() == mylcid);

CListBox::SetSel

Wählt eine Zeichenfolge in einem Listenfeld mit mehrfacher Auswahl aus.

int SetSel(
    int nIndex,
    BOOL bSelect = TRUE);

Parameter

nIndex
Enthält den nullbasierten Index der festzulegenden Zeichenfolge. Wenn -1, wird die Auswahl je nach Wert bSelectvon allen Zeichenfolgen zu allen Zeichenfolgen hinzugefügt oder daraus entfernt.

bSelect
Gibt an, wie die Auswahl festgelegt wird. Wenn ja, wird TRUEdie Zeichenfolge ausgewählt und hervorgehoben. WennFALSEbSelect, wird die Hervorhebung entfernt, und die Zeichenfolge wird nicht mehr ausgewählt. Die angegebene Zeichenfolge ist standardmäßig ausgewählt und hervorgehoben.

Rückgabewert

LB_ERR wenn ein Fehler auftritt.

Hinweise

Verwenden Sie diese Memberfunktion nur für Listenfelder mit mehrfacher Auswahl.

Um ein Element aus einem Listenfeld mit einer Auswahl auszuwählen, verwenden Sie CListBox::SetCurSel.

Beispiel

// Select all of the items with an even index and
// deselect all others.
for (int i = 0; i < m_myODListBox.GetCount(); i++)
{
   m_myODListBox.SetSel(i, ((i % 2) == 0));
}

CListBox::SetTabStops

Legt die Tabstopppositionen in einem Listenfeld fest.

void SetTabStops();
BOOL SetTabStops(const int& cxEachStop);

BOOL SetTabStops(
    int nTabStops,
    LPINT rgTabStops);

Parameter

cxEachStop
Tabstopps werden bei allen cxEachStop Dialogfeldeinheiten festgelegt. Eine Beschreibung einer Dialogeinheit finden Sie unter.See rgTabStops for a description of a dialog unit.

nTabStops
Gibt die Anzahl der Tabstopps an, die im Listenfeld enthalten sein sollen.

rgTabStops
Zeigt auf das erste Element eines Arrays ganzzahliger Zahlen, die die Tabstopppositionen in Dialogfeldeinheiten enthalten. Eine Dialogeinheit ist ein horizontaler oder vertikaler Abstand. Eine horizontale Dialogeinheit ist gleich 14 der aktuellen Basisbreiteneinheit des Dialogfelds, und eine vertikale Dialogeinheit entspricht einer Achtel der aktuellen Dialogbasishöheneinheit. Die Dialogbasiseinheiten werden basierend auf der Höhe und Breite der aktuellen Systemschriftart berechnet. Die GetDialogBaseUnits Windows-Funktion gibt die aktuellen Dialogbasiseinheiten in Pixeln zurück. Die Tabstopps müssen in zunehmender Reihenfolge sortiert werden. Zurück-Registerkarten sind nicht zulässig.

Rückgabewert

Nonzero, wenn alle Registerkarten festgelegt wurden; andernfalls 0.

Hinweise

Um Tabstopps auf die Standardgröße von 2 Dialogeinheiten festzulegen, rufen Sie die parameterlose Version dieser Memberfunktion auf. Um Tabstopps auf eine andere Größe als 2 festzulegen, rufen Sie die Version mit dem cxEachStop Argument auf.

Wenn Sie Tabstopps auf ein Array von Größen festlegen möchten, verwenden Sie die Version mit den rgTabStops Und-Argumenten nTabStops . Ein Tabstopp wird für jeden Wert in rgTabStops, bis zur durch nTabStops.

Um auf einen Aufruf der SetTabStops Memberfunktion zu reagieren, muss das Listenfeld mit der LBS_USETABSTOPS Formatvorlage erstellt worden sein.

Beispiel

// Find the pixel width of the largest first substring.
CString str;
CSize sz;
int nIndex, dx = 0;
CDC *pDC = myListBox.GetDC();
for (int i = 0; i < myListBox.GetCount(); i++)
{
   myListBox.GetText(i, str);

   if ((nIndex = str.Find('\t')) != -1)
      str = str.Right(nIndex);

   sz = pDC->GetTextExtent(str);

   if (sz.cx > dx)
      dx = sz.cx;
}
myListBox.ReleaseDC(pDC);

// Set tab stops at every one and 1/3 units
// of the largest string.
// NOTE: Convert pixels to dialog units.
myListBox.SetTabStops((dx * 4 / 3 * 4) / LOWORD(::GetDialogBaseUnits()));

CListBox::SetTopIndex

Stellt sicher, dass ein bestimmtes Listenfeldelement sichtbar ist.

int SetTopIndex(int nIndex);

Parameter

nIndex
Gibt den nullbasierten Index des Listenfeldelements an.

Rückgabewert

Null bei erfolgreicher Ausführung oder LB_ERR wenn ein Fehler auftritt.

Hinweise

Das System scrollt das Listenfeld, bis entweder das durch nIndex das angegebene Element oben im Listenfeld angezeigt wird oder der maximale Bildlaufbereich erreicht wurde.

Beispiel

// Set the first visible item in the list box to be the middle item
m_myListBox.SetTopIndex(m_myListBox.GetCount() / 2);

CListBox::VKeyToItem

Wird vom Framework aufgerufen, wenn das übergeordnete Fenster des Listenfelds eine WM_VKEYTOITEM Nachricht aus dem Listenfeld empfängt.

virtual int VKeyToItem(
    UINT nKey,
    UINT nIndex);

Parameter

nKey
Der virtuelle Tastencode der Taste, die der Benutzer gedrückt hat. Eine Liste der standardmäßigen virtuellen Schlüsselcodes finden Sie unter Winuser.h

nIndex
Die aktuelle Position des Listenfeld-Caret.

Rückgabewert

Gibt - 2 für keine weitere Aktion, - 1 für Die Standardaktion oder eine nichtnegative Zahl, um einen Index eines Listenfeldelements anzugeben, für das die Standardaktion für den Tastenanschlag ausgeführt werden soll.

Hinweise

Die WM_VKEYTOITEM Nachricht wird vom Listenfeld gesendet, wenn sie eine WM_KEYDOWN Nachricht empfängt, aber nur, wenn das Listenfeld beide der folgenden Elemente erfüllt:

Sie sollten diese Funktion niemals selbst aufrufen. Überschreiben Sie diese Funktion, um ihre eigene benutzerdefinierte Behandlung von Tastaturnachrichten bereitzustellen.

Sie müssen einen Wert zurückgeben, um dem Framework mitzuteilen, welche Aktion ihre Außerkraftsetzung ausgeführt hat. Ein Rückgabewert von - 2 gibt an, dass die Anwendung alle Aspekte der Auswahl des Elements behandelt hat und keine weitere Aktion durch das Listenfeld erfordert. Bevor Sie - 2 zurückgeben, können Sie die Markierung festlegen oder das Caret oder beides verschieben. Um die Auswahl festzulegen, verwenden SetCurSel oder SetSel. Um das Caret zu verschieben, verwenden Sie SetCaretIndex.

Ein Rückgabewert von - 1 gibt an, dass das Listenfeld als Reaktion auf den Tastenanschlag die Standardaktion ausführen soll. Die Standardimplementierung gibt - 1 zurück.

Ein Rückgabewert von 0 oder höher gibt den Index eines Elements im Listenfeld an und gibt an, dass das Listenfeld die Standardaktion für die Tastatureingabe für das angegebene Element ausführen soll.

Beispiel

// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example moves the caret down one item on the down key and up one item
// on the up key. The list box control was created with the following
// code:
//   m_myODListBox.Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
//      CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::VKeyToItem(UINT nKey, UINT nIndex)
{
   // On key up, move the caret up one item.
   if ((nKey == VK_UP) && (nIndex > 0))
   {
      SetCaretIndex(nIndex - 1);
   }
   // On key down, move the caret down one item.
   else if ((nKey == VK_DOWN) && (nIndex < (UINT)GetCount()))
   {
      SetCaretIndex(nIndex + 1);
   }

   // Do not perform any default processing.
   return -2;
}

Siehe auch

MFC-Beispiel STRGTEST
CWnd Klasse
Hierarchiediagramm
CWnd Klasse
CButton Klasse
CComboBox Klasse
CEdit Klasse
CScrollBar Klasse
CStatic Klasse