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) CDialog
gesendet 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 derCBS_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 derCBS_SIMPLE
Formatvorlage gesendet. Bei einem Kombinationsfeld mit derCBS_DROPDOWN
Formatvorlage kannCBS_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 oderCBS_DROPDOWNLIST
derCBS_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 dieCBS_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 dieCBS_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 derCBN_CLOSEUP
Benachrichtigung gesendet, um anzugeben, dass die Auswahl des Benutzers ignoriert werden soll. DieCBN_SELENDCANCEL
oderCBN_SELENDOK
die Benachrichtigung wird auch dann gesendet, wenn dieCBN_CLOSEUP
Benachrichtigung nicht gesendet wird (wie bei einem Kombinationsfeld mit derCBS_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 derCBN_CLOSEUP
Nachricht gesendet, um anzugeben, dass die Auswahl des Benutzers als gültig angesehen werden sollte. DieCBN_SELENDCANCEL
oderCBN_SELENDOK
die Benachrichtigung wird auch dann gesendet, wenn dieCBN_CLOSEUP
Benachrichtigung nicht gesendet wird (wie bei einem Kombinationsfeld mit derCBS_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 überGetLBText
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 CListBox
Handler für diese Nachrichten zu den abgeleiteten Klassen hinzufügen. Weitere Informationen finden Sie unter CWnd::SubclassWindow
.
Vererbungshierarchie
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_NCCREATE
Nachrichten , , WM_CREATE
, WM_NCCALCSIZE
und WM_GETMINMAXINFO
Nachrichten an das Kombinationsfeld.
Diese Nachrichten werden standardmäßig von den OnNcCreate
Funktionen , OnCreate
, , OnNcCalcSize
und OnGetMinMaxInfo
Member in der CWnd
Basisklasse behandelt. Um die Standardmäßige Nachrichtenbehandlung zu erweitern, leiten Sie eine Klasse ab CComboBox
, fügen Sie der neuen Klasse eine Nachrichtenzuordnung hinzu, und überschreiben Sie die vorherigen Nachrichtenhandler-Memberfunktionen. Überschreiben OnCreate
Sie z. B. die erforderliche Initialisierung für eine neue Klasse.
Wenden Sie die folgenden Fensterformatvorlagen auf ein Kombinationsfeld-Steuerelement an. :
WS_CHILD
ImmerWS_VISIBLE
GewöhnlichWS_DISABLED
SeltenWS_VSCROLL
So fügen Sie vertikalen Bildlauf für das Listenfeld im Kombinationsfeld hinzuWS_HSCROLL
So fügen Sie horizontalen Bildlauf für das Listenfeld im Kombinationsfeld hinzuWS_GROUP
So gruppieren Sie SteuerelementeWS_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 durchlpszWildCard
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 durchlpszWildCard
.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 lpDrawItemStruct
Kontext 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 nStartAfter
die 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 lpszFind
der 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 nIndexStart
die 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 SetDroppedWidth
festgelegt 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_ERR
der 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_ERR
der 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_ERRSPACE
ist nicht genügend Arbeitsspeicher verfügbar.
Hinweise
Rufen Sie diese Funktion auf, bevor Sie dem Listenfeldteil des Felds CComboBox
eine 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
, InsertString
und 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_ERR
der Rückgabewert .
Hinweise
Wenn das Kombinationsfeld nicht über die Formatvorlage CBS_AUTOHSCROLL
verfü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 nStartAfter
die 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_combobox
die 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
TRUE
wenn 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_combobox
die 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