Freigeben über


CComboBox-Klasse

Stellt die Funktionalität eines Windows-Kombinationsfelds bereit.

Syntax

class CComboBox : public CWnd

Member

Öffentliche Konstruktoren

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

Öffentliche Methoden

Name Beschreibung
CComboBox::AddString Fügt am Ende der Liste im Listenfeld eines Kombinationsfelds oder an der sortierten Position für Listenfelder mit der CBS_SORT Formatvorlage eine Zeichenfolge hinzu.
CComboBox::Clear Löscht die aktuelle Auswahl (sofern vorhanden) im Bearbeitungssteuerelement.
CComboBox::CompareItem Wird vom Framework aufgerufen, um die relative Position eines neuen Listenelements in einem sortierten Kombinationsfeld für besitzergezeichnete Elemente zu bestimmen.
CComboBox::Copy Kopiert die aktuelle Auswahl (sofern vorhanden) in die Zwischenablage im CF_TEXT Format.
CComboBox::Create Erstellt das Kombinationsfeld und fügt es an das CComboBox Objekt an.
CComboBox::Cut Löscht (Ausschnitte) der aktuellen Auswahl (sofern vorhanden) im Bearbeitungssteuerelement und kopiert den gelöschten Text in die Zwischenablage im CF_TEXT Format.
CComboBox::DeleteItem Wird vom Framework aufgerufen, wenn ein Listenelement aus einem vom Besitzer gezeichneten Kombinationsfeld gelöscht wird.
CComboBox::DeleteString Löscht eine Zeichenfolge aus dem Listenfeld eines Kombinationsfelds.
CComboBox::Dir Fügt dem Listenfeld eines Kombinationsfelds eine Liste von Dateinamen hinzu.
CComboBox::DrawItem Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines vom Besitzer gezeichneten Kombinationsfelds ändert.
CComboBox::FindString Sucht die erste Zeichenfolge, die das angegebene Präfix im Listenfeld eines Kombinationsfelds enthält.
CComboBox::FindStringExact Sucht die erste Listenfeldzeichenfolge (in einem Kombinationsfeld), die der angegebenen Zeichenfolge entspricht.
CComboBox::GetComboBoxInfo Ruft Informationen zum CComboBox Objekt ab.
CComboBox::GetCount Ruft die Anzahl der Elemente im Listenfeld eines Kombinationsfelds ab.
CComboBox::GetCueBanner Ruft den Hinweistext ab, der für ein Kombinationsfeld-Steuerelement angezeigt wird.
CComboBox::GetCurSel Ruft den Index des aktuell ausgewählten Elements (sofern vorhanden) im Listenfeld eines Kombinationsfelds ab.
CComboBox::GetDroppedControlRect Ruft die Bildschirmkoordinaten des sichtbaren (abgelegten) Listenfelds eines Dropdown-Kombinationsfelds ab.
CComboBox::GetDroppedState Bestimmt, ob das Listenfeld eines Dropdown-Kombinationsfelds sichtbar ist (dropd down).
CComboBox::GetDroppedWidth Ruft die mindest zulässige Breite für den Dropdownlistenfeldteil eines Kombinationsfelds ab.
CComboBox::GetEditSel Ruft die Anfangs- und Endzeichenpositionen der aktuellen Auswahl im Bearbeitungssteuerelement eines Kombinationsfelds ab.
CComboBox::GetExtendedUI Bestimmt, ob ein Kombinationsfeld über die Standardbenutzeroberfläche oder die erweiterte Benutzeroberfläche verfügt.
CComboBox::GetHorizontalExtent Gibt die Breite in Pixeln zurück, in denen der Listenfeldteil des Kombinationsfelds horizontal gescrollt werden kann.
CComboBox::GetItemData Ruft den vom Anwendung bereitgestellten 32-Bit-Wert ab, der dem angegebenen Kombinationsfeldelement zugeordnet ist.
CComboBox::GetItemDataPtr Ruft den vom Anwendung bereitgestellten 32-Bit-Zeiger ab, der dem angegebenen Kombinationsfeldelement zugeordnet ist.
CComboBox::GetItemHeight Ruft die Höhe von Listenelementen in einem Kombinationsfeld ab.
CComboBox::GetLBText Ruft eine Zeichenfolge aus dem Listenfeld eines Kombinationsfelds ab.
CComboBox::GetLBTextLen Ruft die Länge einer Zeichenfolge im Listenfeld eines Kombinationsfelds ab.
CComboBox::GetLocale Ruft den Gebietsschemabezeichner für ein Kombinationsfeld ab.
CComboBox::GetMinVisible Ruft die minimale Anzahl der sichtbaren Elemente in der Dropdownliste des aktuellen Kombinationsfelds ab.
CComboBox::GetTopIndex Gibt den Index des ersten sichtbaren Elements im Listenfeldteil des Kombinationsfelds zurück.
CComboBox::InitStorage Stellt Speicherblöcke für Elemente und Zeichenfolgen im Listenfeldbereich des Kombinationsfelds vor.
CComboBox::InsertString Fügt eine Zeichenfolge in das Listenfeld eines Kombinationsfelds ein.
CComboBox::LimitText Beschränkt die Länge des Texts, den der Benutzer in das Bearbeitungssteuerelement eines Kombinationsfelds eingeben kann.
CComboBox::MeasureItem Wird vom Framework aufgerufen, um die Dimensionen des Kombinationsfelds zu bestimmen, wenn ein vom Besitzer gezeichnetes Kombinationsfeld erstellt wird.
CComboBox::Paste Fügt die Daten aus der Zwischenablage an der aktuellen Cursorposition in das Bearbeitungssteuerelement ein. Daten werden nur eingefügt, wenn die Zwischenablage Daten im CF_TEXT Format enthält.
CComboBox::ResetContent Entfernt alle Elemente aus dem Listenfeld und das Bearbeitungssteuerelement eines Kombinationsfelds.
CComboBox::SelectString Sucht nach einer Zeichenfolge im Listenfeld eines Kombinationsfelds und wählt, wenn die Zeichenfolge gefunden wird, die Zeichenfolge im Listenfeld aus und kopiert die Zeichenfolge in das Bearbeitungssteuerelement.
CComboBox::SetCueBanner Legt den Hinweistext fest, der für ein Kombinationsfeld-Steuerelement angezeigt wird.
CComboBox::SetCurSel Wählt eine Zeichenfolge im Listenfeld eines Kombinationsfelds aus.
CComboBox::SetDroppedWidth Legt die minimale zulässige Breite für den Dropdownlistenfeldteil eines Kombinationsfelds fest.
CComboBox::SetEditSel Markiert Zeichen im Bearbeitungssteuerelement eines Kombinationsfelds.
CComboBox::SetExtendedUI Wählt entweder die Standard-Benutzeroberfläche oder die erweiterte Benutzeroberfläche für ein Kombinationsfeld mit dem Format oder CBS_DROPDOWNLIST der CBS_DROPDOWN Standardoberfläche aus.
CComboBox::SetHorizontalExtent Legt die Breite in Pixeln fest, in denen der Listenfeldteil des Kombinationsfelds horizontal gescrollt werden kann.
CComboBox::SetItemData Legt den 32-Bit-Wert fest, der dem angegebenen Element in einem Kombinationsfeld zugeordnet ist.
CComboBox::SetItemDataPtr Legt den 32-Bit-Zeiger fest, der dem angegebenen Element in einem Kombinationsfeld zugeordnet ist.
CComboBox::SetItemHeight Legt die Höhe von Listenelementen in einem Kombinationsfeld oder die Höhe des Bearbeitungssteuerelements (oder statischen Text) eines Kombinationsfelds fest.
CComboBox::SetLocale Legt den Gebietsschemabezeichner für ein Kombinationsfeld fest.
CComboBox::SetMinVisibleItems Legt die Mindestanzahl der sichtbaren Elemente in der Dropdownliste des aktuellen Kombinationsfelds fest.
CComboBox::SetTopIndex Weist den Listenfeldteil des Kombinationsfelds an, das Element mit dem angegebenen Index oben anzuzeigen.
CComboBox::ShowDropDown Blendet das Listenfeld eines Kombinationsfelds mit der Formatvorlage oder dem CBS_DROPDOWN Listenfeld ein oder CBS_DROPDOWNLIST aus.

Hinweise

Ein Kombinationsfeld besteht aus einem Listenfeld, das entweder mit einem statischen Steuerelement oder einem Bearbeitungssteuerelement kombiniert wird. Der Listenfeldteil des Steuerelements kann jederzeit oder nur dropdown angezeigt werden, wenn der Benutzer den Dropdownpfeil neben dem Steuerelement auswählt.

Das aktuell ausgewählte Element (sofern vorhanden) im Listenfeld wird im statischen oder Bearbeitungssteuerelement angezeigt. Wenn das Kombinationsfeld das Dropdownlistenformat aufweist, kann der Benutzer außerdem das Anfangszeichen eines der Elemente in der Liste eingeben, und das Listenfeld( falls sichtbar) markiert das nächste Element mit diesem Anfangszeichen.

In der folgenden Tabelle werden die drei Kombinationsfeldarten verglichen.

Stil Wann ist das Listenfeld sichtbar? Statisches Steuerelement oder Bearbeitungssteuerelement
Einfach Always Bearbeiten
Dropdown Beim Ablegen nach unten Bearbeiten
Dropdownliste Beim Ablegen nach unten statischen

Sie können ein CComboBox Objekt entweder aus einer Dialogvorlage oder direkt in Ihrem Code erstellen. Rufen Sie in beiden Fällen zuerst den Konstruktor CComboBox auf, um das CComboBox Objekt zu erstellen. Rufen Sie dann die Create Memberfunktion auf, um das Steuerelement zu erstellen und es an das CComboBox Objekt anzufügen.

Wenn Sie Windows-Benachrichtigungen behandeln möchten, die von einem Kombinationsfeld an das übergeordnete Element (in der Regel eine klasse abgeleitet) CDialoggesendet werden, fügen Sie der übergeordneten Klasse für jede Nachricht eine Elementfunktion für nachrichtenzuordnungs- und nachrichtenhandlerelementfunktion hinzu.

Jeder Nachrichtenzuordnungseintrag hat die folgende Form:

ON_Notification( id, memberFxn )

dabei id wird die UNTERGEORDNETE FENSTER-ID des Kombinationsfeld-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( );

Die Reihenfolge, in der bestimmte Benachrichtigungen gesendet werden, können nicht vorhergesagt werden. Insbesondere kann eine CBN_SELCHANGE Benachrichtigung vor oder nach einer CBN_CLOSEUP Benachrichtigung erfolgen.

Mögliche Nachrichtenzuordnungseinträge sind die folgenden:

  • ON_CBN_CLOSEUP (Windows 3.1 und höher.) Das Listenfeld eines Kombinationsfelds wurde geschlossen. Diese Benachrichtigung wird nicht für ein Kombinationsfeld mit der CBS_SIMPLE Formatvorlage gesendet.

  • ON_CBN_DBLCLK Der Benutzer doppelklicken auf eine Zeichenfolge im Listenfeld eines Kombinationsfelds. Diese Benachrichtigung wird nur für ein Kombinationsfeld mit der CBS_SIMPLE Formatvorlage gesendet. Bei einem Kombinationsfeld mit der CBS_DROPDOWN Formatvorlage kann CBS_DROPDOWNLIST kein Doppelklick ausgeführt werden, da ein einzelner Klick das Listenfeld ausblendet.

  • ON_CBN_DROPDOWN Das Listenfeld eines Kombinationsfelds ist dabei, dropdown zu gehen (sichtbar gemacht). Diese Benachrichtigung kann nur für ein Kombinationsfeld mit dem Format oder CBS_DROPDOWNLIST der CBS_DROPDOWN Formatvorlage erfolgen.

  • ON_CBN_EDITCHANGE Der Benutzer hat eine Aktion ausgeführt, die den Text im Bearbeitungssteuerelementteil eines Kombinationsfelds möglicherweise geändert hat. CBN_EDITUPDATE Im Gegensatz zur Nachricht wird diese Nachricht nach dem Aktualisieren des Bildschirms von Windows gesendet. Sie wird nicht gesendet, wenn das Kombinationsfeld die CBS_DROPDOWNLIST Formatvorlage aufweist.

  • ON_CBN_EDITUPDATE Der Bearbeitungssteuerelementteil eines Kombinationsfelds ist dabei, geänderten Text anzuzeigen. Diese Benachrichtigung wird gesendet, nachdem das Steuerelement den Text formatiert hat, aber bevor er den Text anzeigt. Sie wird nicht gesendet, wenn das Kombinationsfeld die CBS_DROPDOWNLIST Formatvorlage aufweist.

  • ON_CBN_ERRSPACE Das Kombinationsfeld kann nicht genügend Arbeitsspeicher zuweisen, um eine bestimmte Anforderung zu erfüllen.

  • ON_CBN_SELENDCANCEL (Windows 3.1 und höher.) Gibt an, dass die Auswahl des Benutzers abgebrochen werden soll. Der Benutzer klickt auf ein Element und klickt dann auf ein anderes Fenster oder Steuerelement, um das Listenfeld eines Kombinationsfelds auszublenden. Diese Benachrichtigung wird vor der CBN_CLOSEUP Benachrichtigung gesendet, um anzugeben, dass die Auswahl des Benutzers ignoriert werden soll. Die CBN_SELENDCANCEL oder CBN_SELENDOK die Benachrichtigung wird auch dann gesendet, wenn die CBN_CLOSEUP Benachrichtigung nicht gesendet wird (wie bei einem Kombinationsfeld mit der CBS_SIMPLE Formatvorlage).

  • ON_CBN_SELENDOK Der Benutzer wählt ein Element aus und drückt dann entweder die EINGABETASTE oder klickt auf die NACH-UNTEN-TASTE, um das Listenfeld eines Kombinationsfelds auszublenden. Diese Benachrichtigung wird vor der CBN_CLOSEUP Nachricht gesendet, um anzugeben, dass die Auswahl des Benutzers als gültig angesehen werden sollte. Die CBN_SELENDCANCEL oder CBN_SELENDOK die Benachrichtigung wird auch dann gesendet, wenn die CBN_CLOSEUP Benachrichtigung nicht gesendet wird (wie bei einem Kombinationsfeld mit der CBS_SIMPLE Formatvorlage).

  • ON_CBN_KILLFOCUS Das Kombinationsfeld verliert den Eingabefokus.

  • ON_CBN_SELCHANGE Die Auswahl im Listenfeld eines Kombinationsfelds wird aufgrund des Klickens des Benutzers im Listenfeld oder mithilfe der Pfeiltasten geändert. Bei der Verarbeitung dieser Nachricht kann der Text im Bearbeitungssteuerelement des Kombinationsfelds nur über GetLBText eine andere ähnliche Funktion abgerufen werden. GetWindowText kann nicht verwendet werden.

  • ON_CBN_SETFOCUS Das Kombinationsfeld empfängt den Eingabefokus.

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

Wenn Sie ein Objekt in ein CComboBox anderes Fensterobjekt einbetten, müssen Sie es nicht zerstören. Wenn Sie das CComboBox Objekt auf dem Stapel erstellen, wird es automatisch zerstört. Wenn Sie das CComboBox Objekt mithilfe der new Funktion auf dem Heap erstellen, müssen Sie das Objekt aufrufen delete , um es zu zerstören, wenn das Windows-Kombinationsfeld zerstört wird.

Hinweis: Wenn Sie diese Nachrichten verarbeiten und WM_CHAR nachrichten verarbeiten WM_KEYDOWN möchten, müssen Sie die Bearbeitungs- und Listenfeldsteuerelemente des Kombinationsfelds unterklassen, Klassen ableiten CEdit und CListBoxHandler für diese Nachrichten zu den abgeleiteten Klassen hinzufügen. Weitere Informationen finden Sie unter CWnd::SubclassWindow.

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CComboBox

Anforderungen

Header: afxwin.h

CComboBox::AddString

Fügt dem Listenfeld eines Kombinationsfelds eine Zeichenfolge hinzu.

int AddString(LPCTSTR lpszString);

Parameter

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

Rückgabewert

Wenn der Rückgabewert größer oder gleich 0 ist, ist er der nullbasierte Index für die Zeichenfolge im Listenfeld. Der Rückgabewert ist, wenn ein Fehler auftritt. Der Rückgabewert ist CB_ERR CB_ERRSPACE , wenn nicht genügend Speicherplatz zum Speichern der neuen Zeichenfolge verfügbar ist.

Hinweise

Wenn das Listenfeld nicht mit der CBS_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.

Hinweis

Diese Funktion wird vom Windows-Steuerelement ComboBoxEx nicht unterstützt. Weitere Informationen zu diesem Steuerelement finden Sie unter ComboBoxEx "Steuerelemente " im Windows SDK.

Verwenden Sie die InsertString Memberfunktion, um eine Zeichenfolge an eine bestimmte Stelle in der Liste einzufügen.

Beispiel

// Add 20 items to the combo box.
CString str;
for (int i = 0; i < 20; i++)
{
   str.Format(_T("item string %d"), i);
   m_pComboBox->AddString(str);
}

CComboBox::CComboBox

Erstellt ein CComboBox-Objekt.

CComboBox();

Beispiel

// Declare a local CComboBox object.
CComboBox myComboBox;

// Declare a dynamic CComboBox object.
CComboBox *pmyComboBox = new CComboBox;

CComboBox::Clear

Löscht die aktuelle Auswahl (sofern vorhanden) im Bearbeitungssteuerelement des Kombinationsfelds.

void Clear();

Hinweise

Verwenden Sie die Cut Memberfunktion, um die aktuelle Auswahl zu löschen und den gelöschten Inhalt in die Zwischenablage zu setzen.

Beispiel

// Delete all of the text from the combo box's edit control.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Clear();

CComboBox::CompareItem

Wird vom Framework aufgerufen, um die relative Position eines neuen Elements im Listenfeldbereich eines sortierten Kombinationsfelds 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 CWnd::OnCompareItem Beschreibung von COMPAREITEMSTRUCT.

Hinweise

Standardmäßig führt diese Memberfunktion nichts aus. Wenn Sie ein Kombinationsfeld für 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

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example compares two items using strcmp to sort items in reverse
// alphabetical order. The combo box control was created with the
// following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
int CMyComboBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
   int iComp = 0;
   ASSERT(lpCompareItemStruct->CtlType == ODT_COMBOBOX);
   LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
   ASSERT(lpszText1 != NULL);
   LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
   ASSERT(lpszText2 != NULL);

   if (NULL != lpszText1 && NULL != lpszText2)
   {
      iComp = _tcscmp(lpszText2, lpszText1);
   }

   return iComp;
}

CComboBox::Copy

Kopiert ggf. die aktuelle Auswahl im Bearbeitungssteuerelement des Kombinationsfelds in die Zwischenablage im CF_TEXT Format.

void Copy();

Beispiel

// Copy all of the text from the combo box's edit control
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Copy();

CComboBox::Create

Erstellt das Kombinationsfeld und fügt es an das CComboBox Objekt an.

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

Parameter

dwStyle
Gibt die Formatvorlage des Kombinationsfelds an. Wenden Sie eine beliebige Kombination aus Kombinationsfeldformatvorlagen auf das Feld an.

rect
Zeigt auf die Position und Größe des Kombinationsfelds. Kann eine RECT Struktur oder ein CRect Objekt sein.

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

nID
Gibt die Steuerelement-ID des Kombinationsfelds an.

Rückgabewert

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

Hinweise

Sie erstellen ein CComboBox Objekt in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, und rufen Sie dann auf Create, wodurch das Windows-Kombinationsfeld erstellt und an das CComboBox Objekt angefügt wird.

Bei Create Ausführung sendet Windows die WM_NCCREATENachrichten , , WM_CREATE, WM_NCCALCSIZEund WM_GETMINMAXINFO Nachrichten an das Kombinationsfeld.

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 CComboBox, 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 Kombinationsfeld-Steuerelement an. :

  • WS_CHILD Immer

  • WS_VISIBLE Gewöhnlich

  • WS_DISABLED Selten

  • WS_VSCROLL So fügen Sie vertikalen Bildlauf für das Listenfeld im Kombinationsfeld hinzu

  • WS_HSCROLL So fügen Sie horizontalen Bildlauf für das Listenfeld im Kombinationsfeld hinzu

  • WS_GROUP So gruppieren Sie Steuerelemente

  • WS_TABSTOP So fügen Sie das Kombinationsfeld in die Aktivierreihenfolge ein

Beispiel

m_pComboBox->Create(
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
    CRect(10, 10, 200, 100), pParentWnd, 1);

CComboBox::Cut

Löscht (Ausschnitte) der aktuellen Auswahl(sofern vorhanden) im Kombinationsfeld-Bearbeitungssteuerelement und kopiert den gelöschten Text im Format in CF_TEXT die Zwischenablage.

void Cut();

Hinweise

Um die aktuelle Auswahl zu löschen, ohne den gelöschten Text in die Zwischenablage zu setzen, rufen Sie die Clear Memberfunktion auf.

Beispiel

// Delete all of the text from the combo box's edit control and copy it
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Cut();

CComboBox::DeleteItem

Wird vom Framework aufgerufen, wenn der Benutzer ein Element aus einem Besitzer-Draw-Objekt CComboBox löscht oder das Kombinationsfeld 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. Eine Beschreibung dieser Struktur finden Sie unter.See CWnd::OnDeleteItem for a description of this structure.

Hinweise

Bei der Standardimplementierung dieser Funktion wird keine Aktion ausgeführt. Überschreiben Sie diese Funktion, um das Kombinationsfeld nach Bedarf neu zu zeichnen.

Beispiel

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example simply dumps the item's text. The combo box control was
// created with the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
   ASSERT(lpDeleteItemStruct->CtlType == ODT_COMBOBOX);
   LPTSTR lpszText = (LPTSTR)lpDeleteItemStruct->itemData;
   ASSERT(lpszText != NULL);

   AFXDUMP(lpszText);
}

CComboBox::DeleteString

Löscht das Element in der Position nIndex aus dem Kombinationsfeld.

int DeleteString(UINT nIndex);

Parameter

nIndex
Gibt den Index für die zu löschende Zeichenfolge an.

Rückgabewert

Wenn der Rückgabewert größer oder gleich 0 ist, handelt es sich um eine Anzahl der Zeichenfolgen, die in der Liste verbleiben. Der Rückgabewert ist CB_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 beispielsweise ein Kombinationsfeld 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 item from the combo box.
for (int i = m_pComboBox->GetCount() - 1; i >= 0; i--)
{
   m_pComboBox->DeleteString(i);
}

CComboBox::Dir

Fügt dem Listenfeld eines Kombinationsfelds eine Liste von Dateinamen oder Laufwerken hinzu.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Parameter

attr
Kann eine beliebige Kombination der enum in CFile::GetStatus oder einer beliebigen Kombination der folgenden Werte beschriebenen Werte sein:

  • DDL_READWRITE Die Datei kann ausgelesen oder in diese geschrieben werden.

  • DDL_READONLY Datei kann gelesen, aber nicht in.

  • DDL_HIDDEN Die Datei ist ausgeblendet und wird nicht in einer Verzeichnisauflistung angezeigt.

  • DDL_SYSTEM Datei ist eine Systemdatei.

  • DDL_DIRECTORY Der durch lpszWildCard die Angabe angegebene Name gibt ein Verzeichnis an.

  • DDL_ARCHIVE Die Datei wurde archiviert.

  • DDL_DRIVES Schließen Sie alle Laufwerke ein, die dem namen entsprechen, der durch lpszWildCard.

  • DDL_EXCLUSIVE 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

Wenn der Rückgabewert größer oder gleich 0 ist, ist er der nullbasierte Index des letzten Dateinamens, der der Liste hinzugefügt wurde. Der Rückgabewert ist, wenn ein Fehler auftritt. Der Rückgabewert ist CB_ERR CB_ERRSPACE , wenn nicht genügend Speicherplatz zum Speichern der neuen Zeichenfolgen verfügbar ist.

Hinweise

Diese Funktion wird vom Windows-Steuerelement ComboBoxEx nicht unterstützt. Weitere Informationen zu diesem Steuerelement finden Sie unter ComboBoxEx "Steuerelemente " im Windows SDK.

Beispiel

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

// Make the windows directory the current directory.
::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);

m_pComboBox->ResetContent();
m_pComboBox->Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));

// Reset the current directory to its previous path.
::SetCurrentDirectory(lpszOldPath);

CComboBox::DrawItem

Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines Kombinationsfelds für Besitzer-Zeichnen ändert.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parameter

lpDrawItemStruct
Ein Zeiger auf eine DRAWITEMSTRUCT Struktur, die Informationen zum erforderlichen Zeichnungstyp enthält.

Hinweise

Das itemAction Element der DRAWITEMSTRUCT Struktur definiert die Zeichnungsaktion, die ausgeführt werden soll. Eine Beschreibung dieser Struktur finden Sie unter.See CWnd::OnDrawItem for a description of this structure.

Standardmäßig führt diese Memberfunktion nichts aus. Überschreiben Sie diese Memberfunktion, um die Zeichnung für ein Besitzer-Draw-Objekt CComboBox zu implementieren. Bevor diese Memberfunktion beendet wird, sollte die Anwendung alle GDI-Objekte (Graphics Device Interface) wiederherstellen, die für den angezeigten lpDrawItemStructKontext ausgewählt sind.

Beispiel

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example draws an item's text centered vertically and horizontally. The
// combo box control was created with the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   ASSERT(lpDrawItemStruct->CtlType == ODT_COMBOBOX);
   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. Erase
   // the 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);
   }

   // 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();
}

CComboBox::FindString

Sucht, aber nicht aus, die erste Zeichenfolge, die das angegebene Präfix im Listenfeld eines Kombinationsfelds enthält.

int FindString(
    int nStartAfter,
    LPCTSTR lpszString) 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 -1, wird das gesamte Listenfeld von Anfang an durchsucht.

lpszString
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

Wenn der Rückgabewert größer oder gleich 0 ist, ist er der nullbasierte Index des übereinstimmenden Elements. CB_ERR Wenn die Suche nicht erfolgreich war.

Hinweise

Diese Funktion wird vom Windows-Steuerelement ComboBoxEx nicht unterstützt. Weitere Informationen zu diesem Steuerelement finden Sie unter ComboBoxEx "Steuerelemente " im Windows SDK.

Beispiel

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

// Delete all items that begin with the specified string.
int nItem = 0;
while ((nItem = m_pComboBox->FindString(nItem, lpszmyString)) != CB_ERR)
{
   m_pComboBox->DeleteString(nItem);
}

CComboBox::FindStringExact

Rufen Sie die FindStringExact Memberfunktion auf, um die erste Listenfeldzeichenfolge (in einem Kombinationsfeld) zu finden, die der in lpszFindder Zeichenfolge angegebenen Zeichenfolge entspricht.

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 diese Zeichenfolge eine beliebige Kombination aus Groß- und Kleinbuchstaben enthalten kann.

Rückgabewert

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

Hinweise

Wenn das Kombinationsfeld mit einer Besitzer-Draw-Formatvorlage erstellt wurde, jedoch ohne Formatvorlage CBS_HASSTRINGS , versucht, FindStringExact den Doubleword-Wert mit dem Wert von lpszFind übereinzugleichen.

Beispiel

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

// Delete all items that exactly match the specified string.
int nDex = 0;
while ((nDex = m_pComboBox->FindStringExact(nDex, lpszmyExactString)) != CB_ERR)
{
   m_pComboBox->DeleteString(nDex);
}

CComboBox::GetComboBoxInfo

Ruft Informationen für das CComboBox Objekt ab.

BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;

Parameter

*pcbi*<br/> A pointer to the [COMBOBOXINFO'](/windows/win32/api/winuser/ns-winuser-comboboxinfo)-Struktur.

Rückgabewert

Gibt TRUE bei Erfolg bzw. FALSE bei einem Fehler zurück.

Hinweise

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

CComboBox::GetCount

Rufen Sie diese Memberfunktion auf, um die Anzahl der Elemente im Listenfeldbereich eines Kombinationsfelds abzurufen.

int GetCount() const;

Rückgabewert

Die Anzahl der Elemente. Die zurückgegebene Anzahl ist eine größer als der Indexwert des letzten Elements (der Index ist nullbasiert). CB_ERR Wenn ein Fehler auftritt.

Beispiel

// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
   strItem.Format(_T("item %d"), i);
   m_pComboBox->AddString(strItem);
}

// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);

CComboBox::GetCueBanner

Ruft den Hinweistext ab, der für ein Kombinationsfeld-Steuerelement angezeigt wird.

CString GetCueBanner() const;

BOOL GetCueBanner(
    LPTSTR lpszText,
    int cchText) const;

Parameter

lpszText
[out] Zeigen Sie auf einen Puffer, der den Hinweisbannertext empfängt.

cchText
[in] Größe des Puffers, auf den der lpszText Parameter verweist.

Rückgabewert

In der ersten Überladung enthält ein CString Objekt, das den Hinweisbannertext enthält, falls vorhanden, andernfalls ein CString Objekt mit null Länge.

Oder

In der zweiten Überladung, TRUE wenn diese Methode erfolgreich ist; andernfalls FALSE.

Hinweise

Hinweistext ist eine Eingabeaufforderung, die im Eingabebereich des Kombinationsfeld-Steuerelements angezeigt wird. Der Hinweistext wird angezeigt, bis der Benutzer Eingaben bereitstellt.

Diese Methode sendet die CB_GETCUEBANNER Nachricht, die im Windows SDK beschrieben wird.

CComboBox::GetCurSel

Rufen Sie diese Memberfunktion auf, um zu bestimmen, welches Element im Kombinationsfeld ausgewählt ist.

int GetCurSel() const;

Rückgabewert

Der nullbasierte Index des aktuell ausgewählten Elements im Listenfeld eines Kombinationsfelds oder CB_ERR wenn kein Element ausgewählt ist.

Hinweise

GetCurSel gibt einen Index in die Liste zurück.

Beispiel

// Select the next item of the currently selected item
// in the combo box.
int nIndex = m_pComboBox->GetCurSel();
int nCount = m_pComboBox->GetCount();
if ((nIndex != CB_ERR) && (nCount > 1))
{
   if (++nIndex < nCount)
      m_pComboBox->SetCurSel(nIndex);
   else
      m_pComboBox->SetCurSel(0);
}

CComboBox::GetDroppedControlRect

Rufen Sie die GetDroppedControlRect Memberfunktion auf, um die Bildschirmkoordinaten des sichtbaren Listenfelds (dropd-down) eines Dropdown-Kombinationsfelds abzurufen.

void GetDroppedControlRect(LPRECT lprect) const;

Parameter

lprect
Verweist auf die RECT-Struktur , die die Koordinaten empfängt.

Beispiel

// This example move a combo box so that the upper left
// corner of the combo box is at a specific point.

// The point to move the combo box to.
CPoint myPoint(30, 10);

CRect r;

m_pComboBox->GetDroppedControlRect(&r);

m_pComboBox->GetParent()->ScreenToClient(&r);
r.OffsetRect(myPoint - r.TopLeft());
m_pComboBox->MoveWindow(&r);

CComboBox::GetDroppedState

Rufen Sie die GetDroppedState Memberfunktion auf, um zu bestimmen, ob das Listenfeld eines Dropdown-Kombinationsfelds sichtbar ist (dropd down).

BOOL GetDroppedState() const;

Rückgabewert

Nonzero, wenn das Listenfeld sichtbar ist; andernfalls 0.

Beispiel

// Show the dropdown list box if it is not already dropped.
if (!m_pComboBox->GetDroppedState())
   m_pComboBox->ShowDropDown(TRUE);

CComboBox::GetDroppedWidth

Rufen Sie diese Funktion auf, um die minimale zulässige Breite (in Pixel) des Listenfelds eines Kombinationsfelds abzurufen.

int GetDroppedWidth() const;

Rückgabewert

Bei erfolgreicher Ausführung der mindest zulässigen Breite in Pixeln; andernfalls . CB_ERR

Hinweise

Diese Funktion gilt nur für Kombinationsfelder mit der CBS_DROPDOWN Oder CBS_DROPDOWNLIST Formatvorlage.

Standardmäßig ist die minimale zulässige Breite des Dropdown-Listenfelds 0. Die minimale zulässige Breite kann durch Aufrufen SetDroppedWidthfestgelegt werden. Wenn der Listenfeldteil des Kombinationsfelds angezeigt wird, ist die Breite größer als die zulässige Mindestbreite oder die Kombinationsfeldbreite.

Beispiel

Ein Beispiel hierfür finden Sie unter SetDroppedWidth.

CComboBox::GetEditSel

Ruft die Anfangs- und Endzeichenpositionen der aktuellen Auswahl im Bearbeitungssteuerelement eines Kombinationsfelds ab.

DWORD GetEditSel() const;

Rückgabewert

Ein 32-Bit-Wert, der die Anfangsposition im Wort mit niedriger Reihenfolge und die Position des ersten nicht ausgewählten Zeichens nach dem Ende der Markierung im Wort mit hoher Reihenfolge enthält. Wenn diese Funktion in einem Kombinationsfeld ohne Bearbeitungssteuerelement verwendet wird, CB_ERR wird diese Zurückgegeben.

Beispiel

DWORD dwSel;

// Set the selection to be all characters after the current selection.
if ((dwSel = m_MyComboBox.GetEditSel()) != CB_ERR)
{
   m_MyComboBox.SetEditSel(HIWORD(dwSel), -1);
}

CComboBox::GetExtendedUI

Rufen Sie die GetExtendedUI Memberfunktion auf, um zu bestimmen, ob ein Kombinationsfeld über die Standard-Benutzeroberfläche oder die erweiterte Benutzeroberfläche verfügt.

BOOL GetExtendedUI() const;

Rückgabewert

Nonzero, wenn das Kombinationsfeld über die erweiterte Benutzeroberfläche verfügt; andernfalls 0.

Hinweise

Die erweiterte Benutzeroberfläche kann auf folgende Weise identifiziert werden:

  • Wenn Sie auf das statische Steuerelement klicken, wird das Listenfeld nur für Kombinationsfelder mit der CBS_DROPDOWNLIST Formatvorlage angezeigt.

  • Durch Drücken der NACH-UNTEN-TASTE wird das Listenfeld angezeigt (F4 ist deaktiviert).

Der Bildlauf im statischen Steuerelement ist deaktiviert, wenn die Elementliste nicht sichtbar ist (Pfeiltasten sind deaktiviert).

Beispiel

// Use the extended UI if it is not already set.
if (!m_pComboBox->GetExtendedUI())
   m_pComboBox->SetExtendedUI(TRUE);

CComboBox::GetHorizontalExtent

Ruft aus dem Kombinationsfeld die Breite in Pixeln ab, um die der Listenfeldteil des Kombinationsfelds horizontal gescrollt werden kann.

UINT GetHorizontalExtent() const;

Rückgabewert

Die bildlauffähige Breite des Listenfeldteils des Kombinationsfelds in Pixeln.

Hinweise

Dies gilt nur, wenn der Listenfeldteil des Kombinationsfelds eine horizontale Bildlaufleiste aufweist.

Beispiel

// Find the longest string in the combo box.
CString strText;
CSize sz;
UINT dxText = 0;
CDC *pDCCombo = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, strText);
   sz = pDCCombo->GetTextExtent(strText);

   if (sz.cx > (LONG)dxText)
      dxText = sz.cx;
}
m_pComboBox->ReleaseDC(pDCCombo);

// Set the horizontal extent only if the current extent is not large enough.
if (m_pComboBox->GetHorizontalExtent() < dxText)
{
   m_pComboBox->SetHorizontalExtent(dxText);
   ASSERT(m_pComboBox->GetHorizontalExtent() == dxText);
}

CComboBox::GetItemData

Ruft den vom Anwendung bereitgestellten 32-Bit-Wert ab, der dem angegebenen Kombinationsfeldelement zugeordnet ist.

DWORD_PTR GetItemData(int nIndex) const;

Parameter

nIndex
Enthält den nullbasierten Index eines Elements im Listenfeld des Kombinationsfelds.

Rückgabewert

Der dem Element zugeordnete 32-Bit-Wert oder CB_ERR wenn ein Fehler auftritt.

Hinweise

Der 32-Bit-Wert kann mit dem dwItemData Parameter eines SetItemData Memberfunktionsaufrufs festgelegt werden. Verwenden Sie die GetItemDataPtr Memberfunktion, wenn der abzurufende 32-Bit-Wert ein Zeiger (void *) ist.

Beispiel

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

CComboBox::GetItemDataPtr

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

void* GetItemDataPtr(int nIndex) const;

Parameter

nIndex
Enthält den nullbasierten Index eines Elements im Listenfeld des Kombinationsfelds.

Rückgabewert

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

Beispiel

LPVOID lpmyPtr = m_pComboBox->GetItemDataPtr(5);

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

CComboBox::GetItemHeight

Rufen Sie die GetItemHeight Memberfunktion auf, um die Höhe von Listenelementen in einem Kombinationsfeld abzurufen.

int GetItemHeight(int nIndex) const;

Parameter

nIndex
Gibt die Komponente des Kombinationsfelds an, dessen Höhe abgerufen werden soll. Wenn der nIndex Parameter -1 ist, wird die Höhe des Bearbeitungssteuerelements (oder statischer Text) des Kombinationsfelds abgerufen. Wenn das Kombinationsfeld die CBS_OWNERDRAWVARIABLE Formatvorlage aufweist, gibt den nullbasierten Index des Listenelements an, nIndex dessen Höhe abgerufen werden soll. nIndex Andernfalls sollte auf 0 festgelegt werden.

Rückgabewert

Die Höhe des angegebenen Elements in Pixeln in einem Kombinationsfeld. Der Rückgabewert ist CB_ERR , wenn ein Fehler auftritt.

Beispiel

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

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

CComboBox::GetLBText

Ruft eine Zeichenfolge aus dem Listenfeld eines Kombinationsfelds ab.

int GetLBText(
    int nIndex,
    LPTSTR lpszText) const;

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

Parameter

nIndex
Enthält den nullbasierten Index der zu kopierenden Listenfeldzeichenfolge.

lpszText
Verweist auf einen Puffer, der die Zeichenfolge empfängt. Der Puffer muss über ausreichend Speicherplatz für die Zeichenfolge und ein endendes NULL-Zeichen verfügen.

rString
Ein Verweis auf eine CString.

Rückgabewert

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

Hinweise

Die zweite Form dieser Memberfunktion füllt ein CString Objekt mit dem Text des Elements aus.
Wenn nIndex diese Funktion ungültig ist, löst diese Funktion eine E_INVALIDARG Ausnahme aus (Fehlercode: -2147024809, 0x80070057).

Beispiel

// Dump all of the items in the combo box.
CString str1, str2;
int n;
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   n = m_pComboBox->GetLBTextLen(i);
   m_pComboBox->GetLBText(i, str1.GetBuffer(n));
   str1.ReleaseBuffer();

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

CComboBox::GetLBTextLen

Ruft die Länge einer Zeichenfolge im Listenfeld eines Kombinationsfelds ab.

int GetLBTextLen(int nIndex) const;

Parameter

nIndex
Enthält den nullbasierten Index der Listenfeldzeichenfolge.

Rückgabewert

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

Beispiel

Ein Beispiel hierfür finden Sie unter CComboBox::GetLBText.

CComboBox::GetLocale

Ruft das gebietsschema ab, das vom Kombinationsfeld verwendet wird.

LCID GetLocale() const;

Rückgabewert

Der Gebietsschemabezeichner (LCID)-Wert für die Zeichenfolgen im Kombinationsfeld.

Hinweise

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

Beispiel

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

CComboBox::GetMinVisible

Ruft die minimale Anzahl der sichtbaren Elemente in der Dropdownliste des aktuellen Kombinationsfeld-Steuerelements ab.

int GetMinVisible() const;

Rückgabewert

Die Mindestanzahl der sichtbaren Elemente in der aktuellen Dropdownliste.

Hinweise

Diese Methode sendet die CB_GETMINVISIBLE Nachricht, die im Windows SDK beschrieben wird.

CComboBox::GetTopIndex

Ruft den nullbasierten Index des ersten sichtbaren Elements im Listenfeldbereich des Kombinationsfelds ab.

int GetTopIndex() const;

Rückgabewert

Der nullbasierte Index des ersten sichtbaren Elements im Listenfeldteil des Kombinationsfelds, falls erfolgreich, CB_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 nTop = m_pComboBox->GetCount() / 2;
if (m_pComboBox->GetTopIndex() < nTop)
{
   m_pComboBox->SetTopIndex(nTop);
   ASSERT(m_pComboBox->GetTopIndex() == nTop);
}

CComboBox::InitStorage

Weist Speicher zum Speichern von Listenfeldelementen im Listenfeldteil des Kombinationsfelds 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 der Listenfeldteil des Kombinationsfelds speichern kann, bevor eine Speicher-Neuverteilung erforderlich ist, andernfalls CB_ERRSPACEist nicht genügend Arbeitsspeicher verfügbar.

Hinweise

Rufen Sie diese Funktion auf, bevor Sie dem Listenfeldteil des Felds CComboBoxeine große Anzahl von Elementen hinzufügen.

Nur Windows 95/98: Der wParam 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.

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.

Beispiel

// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int nAlloc = pmyComboBox->InitStorage(256, 10);
ASSERT(nAlloc != CB_ERRSPACE);

// Add 256 items to the combo box.
CString strAdd;
for (int i = 0; i < 256; i++)
{
   strAdd.Format(_T("item string %d"), i);
   m_pComboBox->AddString(strAdd);
}

CComboBox::InsertString

Fügt eine Zeichenfolge in das Listenfeld eines Kombinationsfelds ein.

int InsertString(
    int nIndex,
    LPCTSTR lpszString);

Parameter

nIndex
Enthält den nullbasierten Index der Position im Listenfeld, die die Zeichenfolge aufnehmen soll. Wenn dieser Parameter -1 ist, wird die Zeichenfolge am Ende der Liste hinzugefügt.

lpszString
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 CB_ERR , wenn ein Fehler auftritt. Der Rückgabewert ist CB_ERRSPACE , wenn nicht genügend Speicherplatz zum Speichern der neuen Zeichenfolge verfügbar ist.

Hinweise

AddString Im Gegensatz zur Memberfunktion führt die InsertString Memberfunktion nicht dazu, dass eine Liste mit der CBS_SORT Formatvorlage sortiert wird.

Hinweis

Diese Funktion wird vom Windows-Steuerelement ComboBoxEx nicht unterstützt. Weitere Informationen zu diesem Steuerelement finden Sie unter ComboBoxEx "Steuerelemente " im Windows SDK.

Beispiel

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

CComboBox::LimitText

Beschränkt die Länge in Byte des Texts, den der Benutzer in das Bearbeitungssteuerelement eines Kombinationsfelds eingeben kann.

BOOL LimitText(int nMaxChars);

Parameter

nMaxChars
Gibt die Länge (in Byte) des Texts an, den der Benutzer eingeben kann. Wenn dieser Parameter 0 ist, wird die Textlänge auf 65.535 Bytes festgelegt.

Rückgabewert

Nonzero bei erfolgreicher Ausführung. Wenn für ein Kombinationsfeld mit der Formatvorlage CBS_DROPDOWNLIST oder für ein Kombinationsfeld ohne Bearbeitungssteuerelement aufgerufen wird, lautet CB_ERRder Rückgabewert .

Hinweise

Wenn das Kombinationsfeld nicht über die Formatvorlage CBS_AUTOHSCROLLverfügt, hat das Festlegen des Textlimits keine Auswirkung, wenn die Textgrenze größer als die Größe des Bearbeitungssteuerelements ist.

LimitText beschränkt nur den Text, den der Benutzer eingeben kann. Es hat keine Auswirkungen auf Text, der sich bereits im Bearbeitungssteuerelement befindet, wenn die Nachricht gesendet wird, oder wirkt sich nicht auf die Länge des Texts aus, der in das Bearbeitungssteuerelement kopiert wird, wenn eine Zeichenfolge im Listenfeld ausgewählt ist.

Beispiel

// Limit the number of characters in the combo box's edit control to
// be the maximum number visible.

// Get the text metrics for the combo box; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDCCB = m_pComboBox->GetDC();
pDCCB->GetTextMetrics(&tm);
m_pComboBox->ReleaseDC(pDCCB);

CRect rect;
m_pComboBox->GetClientRect(&rect);

m_pComboBox->LimitText(rect.Width() / tm.tmAveCharWidth);

CComboBox::MeasureItem

Wird vom Framework aufgerufen, wenn ein Kombinationsfeld mit einem Besitzer-Zeichnen-Stil 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 im Kombinationsfeld zu informieren. Wenn das Kombinationsfeld mit der CBS_OWNERDRAWVARIABLE Formatvorlage erstellt wird, ruft das Framework diese Memberfunktion für jedes Element im Listenfeld auf. Andernfalls wird dieses Element nur einmal aufgerufen.

Die Verwendung des CBS_OWNERDRAWFIXED Stils in einem Kombinationsfeld für Besitzer-Zeichnen, das mit der SubclassDlgItem Memberfunktion CWnd erstellt wurde, umfasst weitere Programmierüberlegungen. Weitere Informationen finden Sie in der Diskussion im Technischen Hinweis 14.

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

Beispiel

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
   ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);

   if (lpMeasureItemStruct->itemID != (UINT)-1)
   {
      LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
      ASSERT(lpszText != NULL);
      CSize sz;
      CDC *pDC = GetDC();

      sz = pDC->GetTextExtent(lpszText);

      ReleaseDC(pDC);

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

CComboBox::Paste

Fügt die Daten aus der Zwischenablage in das Bearbeitungssteuerelement des Kombinationsfelds an der aktuellen Cursorposition ein.

void Paste();

Hinweise

Daten werden nur eingefügt, wenn die Zwischenablage Daten im CF_TEXT Format enthält.

Beispiel

// Replace all of the text in the combo box's edit control with the text
// in the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Paste();

CComboBox::ResetContent

Entfernt alle Elemente aus dem Listenfeld und das Bearbeitungssteuerelement eines Kombinationsfelds.

void ResetContent();

Beispiel

// Delete all the items from the combo box.
m_pComboBox->ResetContent();
ASSERT(m_pComboBox->GetCount() == 0);

CComboBox::SelectString

Sucht im Listenfeld eines Kombinationsfelds nach einer Zeichenfolge, und wenn die Zeichenfolge gefunden wird, wird die Zeichenfolge im Listenfeld ausgewählt und in das Bearbeitungssteuerelement kopiert.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszString);

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 -1, wird das gesamte Listenfeld von Anfang an durchsucht.

lpszString
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 ausgewählten Elements, wenn die Zeichenfolge gefunden wurde. Wenn die Suche nicht erfolgreich war, lautet CB_ERR der Rückgabewert und die aktuelle Auswahl wird nicht geändert.

Hinweise

Eine Zeichenfolge wird nur ausgewählt, wenn ihre Anfangszeichen (vom Anfangspunkt) mit den Zeichen in der Präfixzeichenfolge übereinstimmen.

Beachten Sie, dass die SelectString Funktionen und FindString Member beide eine Zeichenfolge finden, aber die SelectString Memberfunktion wählt auch die Zeichenfolge aus.

Beispiel

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

// Select the item that begins with the specified string.
int nSel = m_pComboBox->SelectString(0, lpszSelect);
ASSERT(nSel != CB_ERR);

CComboBox::SetCueBanner

Legt den Hinweistext fest, der für ein Kombinationsfeld-Steuerelement angezeigt wird.

BOOL SetCueBanner(LPCTSTR lpszText);

Parameter

lpszText
[in] Zeiger auf einen mit Null beendeten Puffer, der den Hinweistext enthält.

Rückgabewert

TRUE, wenn die Methode erfolgreich ausgeführt wurde, andernfalls FALSE.

Hinweise

Hinweistext ist eine Eingabeaufforderung, die im Eingabebereich des Kombinationsfeld-Steuerelements angezeigt wird. Der Hinweistext wird angezeigt, bis der Benutzer Eingaben bereitstellt.

Diese Methode sendet die CB_SETCUEBANNER Nachricht, die im Windows SDK beschrieben wird.

Beispiel

Im ersten Codebeispiel wird die Variable definiert, m_comboboxdie für den programmgesteuerten Zugriff auf das Kombinationsfeld-Steuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.

// Variable to access the combo box control
CComboBox m_combobox;

Im nächsten Codebeispiel wird das Markerbanner für das Kombinationsfeld-Steuerelement festgelegt.

// Add extra initialization here.

// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
    str.Format(_T("Item %2d"), i);
    m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));

// End of extra initialization.

CComboBox::SetCurSel

Wählt eine Zeichenfolge im Listenfeld eines Kombinationsfelds aus.

int SetCurSel(int nSelect);

Parameter

nSelect
Gibt den nullbasierten Index der auszuwählenden Zeichenfolge an. Wenn -1, wird eine aktuelle Auswahl im Listenfeld entfernt, und das Bearbeitungssteuerelement wird gelöscht.

Rückgabewert

Der nullbasierte Index des ausgewählten Elements, wenn die Nachricht erfolgreich ist. Der Rückgabewert ist CB_ERR wenn nSelect größer als die Anzahl der Elemente in der Liste ist oder auf nSelect -1 festgelegt ist, wodurch die Auswahl gelöscht wird.

Hinweise

Bei Bedarf scrollt das Listenfeld durch die Zeichenfolge in die Ansicht (wenn das Listenfeld sichtbar ist). Der Text im Bearbeitungssteuerelement des Kombinationsfelds wird geändert, um die neue Auswahl widerzuspiegeln. Jede vorherige Auswahl im Listenfeld wird entfernt.

Beispiel

// Select the last item in the combo box.
int nLast = pmyComboBox->GetCount() - 1;
if (nLast >= 0)
   m_pComboBox->SetCurSel(nLast);

CComboBox::SetDroppedWidth

Rufen Sie diese Funktion auf, um die minimale zulässige Breite des Listenfelds eines Kombinationsfelds in Pixel festzulegen.

int SetDroppedWidth(UINT nWidth);

Parameter

nWidth
Die minimale zulässige Breite des Listenfeldteils des Kombinationsfelds in Pixel.

Rückgabewert

Wenn die neue Breite des Listenfelds erfolgreich verläuft, andernfalls CB_ERR.

Hinweise

Diese Funktion gilt nur für Kombinationsfelder mit der CBS_DROPDOWN Oder CBS_DROPDOWNLIST Formatvorlage.

Standardmäßig ist die minimale zulässige Breite des Dropdown-Listenfelds 0. Wenn der Listenfeldteil des Kombinationsfelds angezeigt wird, ist die Breite größer als die zulässige Mindestbreite oder die Kombinationsfeldbreite.

Beispiel

// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->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_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(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_pComboBox->ReleaseDC(pDC);

// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2 * ::GetSystemMetrics(SM_CXEDGE);

// Set the width of the list box so that every item is completely visible.
m_pComboBox->SetDroppedWidth(dx);

CComboBox::SetEditSel

Markiert Zeichen im Bearbeitungssteuerelement eines Kombinationsfelds.

BOOL SetEditSel(
    int nStartChar,
    int nEndChar);

Parameter

nStartChar
Gibt die Startposition an. Wenn die Startposition auf -1 festgelegt ist, wird eine vorhandene Auswahl entfernt.

nEndChar
Gibt die Endposition an. Wenn die Endposition auf -1 festgelegt ist, wird der gesamte Text von der Anfangsposition bis zum letzten Zeichen im Bearbeitungssteuerelement ausgewählt.

Rückgabewert

Nonzero, wenn die Memberfunktion erfolgreich ist; andernfalls 0. Wenn die Formatvorlage vorhanden CBS_DROPDOWNLIST ist oder kein Listenfeld vorhanden ist CB_ERR CComboBox.

Hinweise

Die Positionen sind nullbasiert. Um das erste Zeichen des Bearbeitungssteuerelements auszuwählen, geben Sie eine Startposition von 0 an. Die Endposition ist für das Zeichen direkt nach dem letzten zu markierenden Zeichen vorgesehen. Wenn Sie beispielsweise die ersten vier Zeichen des Bearbeitungssteuerelements auswählen möchten, verwenden Sie eine Anfangsposition von 0 und eine Endposition von 4.

Hinweis

Diese Funktion wird vom Windows-Steuerelement ComboBoxEx nicht unterstützt. Weitere Informationen zu diesem Steuerelement finden Sie unter ComboBoxEx "Steuerelemente " im Windows SDK.

Beispiel

Ein Beispiel hierfür finden Sie unter CComboBox::GetEditSel.

CComboBox::SetExtendedUI

Rufen Sie die SetExtendedUI Memberfunktion auf, um entweder die Standard-Benutzeroberfläche oder die erweiterte Benutzeroberfläche für ein Kombinationsfeld auszuwählen, das bzw. die das CBS_DROPDOWN CBS_DROPDOWNLIST Format aufweist.

int SetExtendedUI(BOOL bExtended = TRUE);

Parameter

bExtended
Gibt an, ob das Kombinationsfeld die erweiterte Benutzeroberfläche oder die Standard-Benutzeroberfläche verwenden soll. Ein Wert, der TRUE die erweiterte Benutzeroberfläche auswählt; ein Wert der FALSE Auswahl der Standardbenutzeroberfläche.

Rückgabewert

CB_OKAY wenn der Vorgang erfolgreich ist oder CB_ERR ein Fehler auftritt.

Hinweise

Die erweiterte Benutzeroberfläche kann auf folgende Weise identifiziert werden:

  • Wenn Sie auf das statische Steuerelement klicken, wird das Listenfeld nur für Kombinationsfelder mit der CBS_DROPDOWNLIST Formatvorlage angezeigt.

  • Durch Drücken der NACH-UNTEN-TASTE wird das Listenfeld angezeigt (F4 ist deaktiviert).

Der Bildlauf im statischen Steuerelement ist deaktiviert, wenn die Elementliste nicht sichtbar ist (die Pfeiltasten sind deaktiviert).

Beispiel

Ein Beispiel hierfür finden Sie unter CComboBox::GetExtendedUI.

CComboBox::SetHorizontalExtent

Legt die Breite in Pixel fest, um die der Listenfeldteil des Kombinationsfelds horizontal gescrollt werden kann.

void SetHorizontalExtent(UINT nExtent);

Parameter

nExtent
Gibt die Anzahl der Pixel an, um die der Listenfeldteil des Kombinationsfelds horizontal gescrollt werden kann.

Hinweise

Wenn die Breite des Listenfelds kleiner als dieser Wert ist, führt die horizontale Bildlaufleiste einen horizontalen Bildlauf durch Elemente im Listenfeld aus. Wenn die Breite des Listenfelds gleich oder größer als dieser Wert ist, wird die horizontale Bildlaufleiste ausgeblendet oder, wenn das Kombinationsfeld die CBS_DISABLENOSCROLL Formatvorlage aufweist, deaktiviert.

Beispiel

// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->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_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(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_pComboBox->ReleaseDC(pDC);

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

CComboBox::SetItemData

Legt den 32-Bit-Wert fest, der dem angegebenen Element in einem Kombinationsfeld zugeordnet ist.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Parameter

nIndex
Enthält einen nullbasierten Index für das festzulegende Element.

dwItemData
Enthält den neuen Wert, der dem Element zugeordnet werden soll.

Rückgabewert

CB_ERR wenn ein Fehler auftritt.

Hinweise

Verwenden Sie die SetItemDataPtr Memberfunktion, wenn das 32-Bit-Element ein Zeiger sein soll.

Beispiel

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

CComboBox::SetItemDataPtr

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

int SetItemDataPtr(
    int nIndex,
    void* pData);

Parameter

nIndex
Enthält einen nullbasierten Index für das Element.

pData
Enthält den Zeiger, der dem Element zugeordnet werden soll.

Rückgabewert

CB_ERR wenn ein Fehler auftritt.

Hinweise

Dieser Zeiger bleibt gültig für die Lebensdauer des Kombinationsfelds, auch wenn sich die relative Position des Elements innerhalb des Kombinationsfelds ä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_pComboBox->GetCount(); i++)
{
   m_pComboBox->SetItemDataPtr(i, NULL);
}

CComboBox::SetItemHeight

Rufen Sie die SetItemHeight Memberfunktion auf, um die Höhe von Listenelementen in einem Kombinationsfeld oder die Höhe des Bearbeitungssteuerelements (oder statischen Text) eines Kombinationsfelds festzulegen.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Parameter

nIndex
Gibt an, ob die Höhe von Listenelementen oder die Höhe des Bearbeitungssteuerelements (oder statischer Text) des Kombinationsfelds festgelegt ist.

Wenn das Kombinationsfeld die CBS_OWNERDRAWVARIABLE Formatvorlage aufweist, nIndex gibt den nullbasierten Index des Listenelements an, nIndex dessen Höhe festgelegt werden soll. Andernfalls muss 0 sein, und die Höhe aller Listenelemente wird festgelegt.

Wenn nIndex -1 ist, muss die Höhe des Bearbeitungssteuerelements oder des statischen Textteils des Kombinationsfelds festgelegt werden.

cyItemHeight
Gibt die Höhe der kombinationsfeld-Komponente in Pixel an, die durch nIndex.

Rückgabewert

CB_ERR wenn der Index oder die Höhe ungültig ist; andernfalls 0.

Hinweise

Die Höhe des Bearbeitungssteuerelements (oder statischer Text) des Kombinationsfelds wird unabhängig von der Höhe der Listenelemente festgelegt. Eine Anwendung muss sicherstellen, dass die Höhe des Bearbeitungssteuerelements (oder statischer Text) nicht kleiner als die Höhe eines bestimmten Listenfeldelements ist.

Beispiel

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

   m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);

CComboBox::SetLocale

Legt den Gebietsschemabezeichner für dieses Kombinationsfeld fest.

LCID SetLocale(LCID nNewLocale);

Parameter

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

Rückgabewert

Der vorherige Gebietsschemabezeichner (LCID)-Wert für dieses Kombinationsfeld.

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_pComboBox->SetLocale(mylcid);
ASSERT(m_pComboBox->GetLocale() == mylcid);

CComboBox::SetMinVisibleItems

Legt die Mindestanzahl der sichtbaren Elemente in der Dropdownliste des aktuellen Kombinationsfeld-Steuerelements fest.

BOOL SetMinVisibleItems(int iMinVisible);

Parameter

iMinVisible
[in] Gibt die Mindestanzahl der sichtbaren Elemente an.

Rückgabewert

TRUEwenn diese Methode erfolgreich ist; andernfalls . FALSE

Hinweise

Diese Methode sendet die CB_SETMINVISIBLE Nachricht, die im Windows SDK beschrieben wird.

Beispiel

Im ersten Codebeispiel wird die Variable definiert, m_comboboxdie für den programmgesteuerten Zugriff auf das Kombinationsfeld-Steuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.

// Variable to access the combo box control
CComboBox m_combobox;

Im nächsten Codebeispiel werden 20 Elemente in die Dropdownliste eines Kombinationsfeld-Steuerelements eingefügt. Anschließend wird festgelegt, dass mindestens 10 Elemente angezeigt werden, wenn ein Benutzer den Dropdownpfeil drückt.

// Add extra initialization here.

// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
    str.Format(_T("Item %2d"), i);
    m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));

// End of extra initialization.

CComboBox::SetTopIndex

Stellt sicher, dass ein bestimmtes Element im Listenfeldbereich des Kombinationsfelds sichtbar ist.

int SetTopIndex(int nIndex);

Parameter

nIndex
Gibt den nullbasierten Index des Listenfeldelements an.

Rückgabewert

Null bei erfolgreicher Ausführung oder CB_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 combo box to be the middle item
m_pComboBox->SetTopIndex(m_pComboBox->GetCount() / 2);

CComboBox::ShowDropDown

Blendet das Listenfeld eines Kombinationsfelds mit der Formatvorlage oder dem CBS_DROPDOWN Listenfeld ein oder CBS_DROPDOWNLIST aus.

void ShowDropDown(BOOL bShowIt = TRUE);

Parameter

bShowIt
Gibt an, ob das Dropdown-Listenfeld angezeigt oder ausgeblendet werden soll. Ein Wert, der TRUE das Listenfeld anzeigt. Ein Wert zum Ausblenden des FALSE Listenfelds.

Hinweise

Standardmäßig wird in einem Kombinationsfeld dieser Formatvorlage das Listenfeld angezeigt.

Diese Memberfunktion hat keine Auswirkung auf ein Kombinationsfeld, das mit der CBS_SIMPLE Formatvorlage erstellt wurde.

Beispiel

Ein Beispiel hierfür finden Sie unter CComboBox::GetDroppedState.

Siehe auch

MFC-Beispiel STRGBARS
CWnd Klasse
Hierarchiediagramm
CWnd Klasse
CButton Klasse
CEdit Klasse
CListBox Klasse
CScrollBar Klasse
CStatic Klasse
CDialog Klasse