Kombinationsfeldfeatures

In diesem Dokument werden die Features des Kombinationsfelds erläutert. Weitere Informationen finden Sie unter den folgenden Themen:

Besondere Features

Es gibt spezielle Nachrichten und Funktionen, die es einer Anwendung ermöglichen, eine Verzeichnisauflistung in einem Kombinationsfeld anzuzeigen, Daten Listenelementen in einem Kombinationsfeld zuzuordnen und die Tastaturschnittstelle für ein Dropdown-Kombinationsfeld oder Dropdownlistenfeld zu ändern.

Verzeichnislisten

Eine Anwendung kann die Namen von Dateien oder Unterverzeichnissen einem Kombinationsfeld hinzufügen, indem sie die CB _ DIR-Nachricht an sie sendet. Der wParam-Parameter für diese Meldung gibt die Attribute der hinzuzufügenden Dateien an, und der lParam-Parameter ist ein Zeiger auf die Textzeichenfolge, die die Dateispezifikation definiert.

Sie können die DlgDirListComboBox-Funktion verwenden, um den Inhalt eines Kombinationsfelds in einem Dialogfeld zu ersetzen. Die Funktion füllt das Kombinationsfeld mit den Namen von Laufwerken, Verzeichnissen und Dateien, die einem angegebenen Kriteriensatz entsprechen. Die DlgDirSelectComboBoxEx-Funktion ruft die aktuelle Auswahl in einem Kombinationsfeld ab, das von DlgDirListComboBox initialisiert wurde. Diese Funktionen ermöglichen es dem Benutzer, ein Laufwerk, ein Verzeichnis oder eine Datei aus einem Kombinationsfeld auszuwählen, ohne den Speicherort und Namen der Datei einzugeben.

Die Funktionen DlgDirListComboBox und DlgDirSelectComboBoxEx sowie die CB _ DIR-Nachricht ähneln den Funktionen DlgDirList und DlgDirSelectEx sowie der LB _ DIR-Nachricht, die mit Listenfeldern verwendet wird.

Den Listenelementen zugeordnete Daten

Eine Anwendung kann den Listenelementen in einem Kombinationsfeld Daten zuordnen. Die CB _ SETITEMDATA-Nachricht ordnet einem Listenelement einen DWORD-Wert zu, und CB _ GETITEMDATA ruft den Einem Listenelement zugeordneten Wert ab.

Im Beispiel unter Erstellen eines gezeichneten Kombinationsfelds vom Besitzer werden Elementdaten verwendet, um jedem Element in einem Dropdownlistenfeld eine Konstante zuzuordnen. Ein solcher eindeutiger Wert identifiziert jedes Element unabhängig von seiner sortierten Position.

Andere Anwendungen können Elementdaten verwenden, um ein Handle oder einen Zeiger einem Listenelement zuzuordnen. In diesem Falle kann eine Anwendung eine WM _ DELETEITEM-Nachricht verarbeiten, um das angegebene Objekt zu löschen oder frei zu machen, wenn das Listenelement gelöscht wird.

Erweiterte Benutzeroberfläche

Dropdown-Kombinationsfelder und Dropdownlistenfelder unterstützen eine alternative Tastaturschnittstelle, die als erweiterte Benutzeroberfläche bezeichnet wird. Standardmäßig wird die Liste mit der F4-Taste geöffnet oder geschlossen, und der NACH-UNTEN-PFEIL ändert die aktuelle Auswahl. In einem Kombinationsfeld mit der erweiterten Benutzeroberfläche ist die F4-Taste jedoch deaktiviert, und durch Drücken der NACH-UNTEN-TASTE wird die Dropdownliste geöffnet. Darüber hinaus verfügt das Mausrad, das normalerweise durch die Elemente in der Liste scrollt, über keine Funktion, wenn die erweiterte Benutzeroberfläche festgelegt ist.

Um die Benutzeroberfläche für ein Kombinationsfeld auszuwählen, kann eine Anwendung die CB _ SETEXTENDEDUI-Nachricht an das Kombinationsfeld senden. Ein TRUE-Wert für den wParam-Parameter aktiviert die erweiterte Benutzeroberfläche. Ein FALSE-Wert legt die Standardbenutzerschnittstelle fest. Um zu bestimmen, ob ein Kombinationsfeld die erweiterte Benutzeroberfläche verwendet, kann eine Anwendung die CB _ GETEXTENDEDUI-Nachricht an das Kombinationsfeld senden.

Hinweisbanner

Cue-Banner sind ein neues Feature von Bearbeitungssteuerelementen und Kombinationsfeldern. Der Zweck eines Hinweisbanners besteht darin, dem Benutzer einen Hinweis zum Zweck eines Bearbeitungssteuerelements oder Kombinationsfelds bereitzustellen. Der folgende Screenshot zeigt ein Bearbeitungssteuerelement mit dem Hinweistext "Search".

Screenshot eines Bearbeitungssteuerelements mit dem Hinweistext "search"

Der Text eines Hinweisbanners wird angezeigt, wenn ein Bearbeitungssteuerelement keinen Text oder ein Kombinationsfeld keine Auswahl hat. Wenn der Benutzer Text in das Bearbeitungssteuerelement eingibt oder eine Auswahl in einem Kombinationsfeld trifft, verschwindet das Hinweisbanner. Standardmäßig wird das Hinweisbanner auch ausgeblendet, wenn das Bearbeitungssteuerelement oder Kombinationsfeld den Fokus erhält.

Kombinationsfeldbenachrichtigungen

Nachrichten aus Kombinationsfeldern werden als Benachrichtigungscodes in Form von WM _ COMMAND-Nachrichten gesendet. Der Benachrichtigungscode wird im hohen Wort des wParam-Parameters gespeichert, und eine Anwendung kann die folgenden Kombinationsfeldbenachrichtigungscodes verarbeiten.

Benachrichtigungscode Beschreibung
CBN _ CLOSEUP Gibt an, dass die Liste in einem Dropdown-Kombinationsfeld oder Dropdownlistenfeld kurz vor dem Schließen steht.
CBN _ DBLCLK Gibt an, dass der Benutzer in einem einfachen Kombinationsfeld auf ein Listenelement doppelklickt.
DROPDOWNLISTE _ "CBN" Gibt an, dass die Liste in einem Dropdown-Kombinationsfeld oder Dropdown-Listenfeld geöffnet werden soll.
CBN _ EDITCHANGE Gibt an, dass der Benutzer den Text im Bearbeitungssteuerelement eines einfachen Oder Dropdown-Kombinationsfelds geändert hat. Dieser Benachrichtigungscode wird gesendet, nachdem der geänderte Text angezeigt wurde.
CBN _ EDITUPDATE Gibt an, dass der Benutzer den Text im Bearbeitungssteuerelement eines einfachen Oder Dropdown-Kombinationsfelds geändert hat. Dieser Benachrichtigungscode wird gesendet, bevor der geänderte Text angezeigt wird.
CBN _ ERRSPACE Gibt an, dass das Kombinationsfeld nicht genügend Arbeitsspeicher zuweisen kann, um eine Anforderung auszuführen, z. B. das Hinzufügen eines Listenelements.
CBN _ KILLFOCUS Gibt an, dass das Kombinationsfeld den Eingabefokus verlieren wird.
CBN _ SELCHANGE Gibt an, dass sich die aktuelle Auswahl geändert hat.
CBN _ SELENDCANCEL Gibt an, dass die Auswahl, die in der Dropdownliste getroffen wurde, während sie verworfen wurde, ignoriert werden soll.
CBN _ SELENDOK Gibt an, dass die Dropdownliste "Auswahl getroffen" akzeptiert werden soll, während sie gelöscht wurde.
CBN _ SETFOCUS Gibt an, dass das Kombinationsfeld den Eingabefokus erhalten hat.

Standardverhalten des Kombinationsfelds

In der folgenden Tabelle werden die Nachrichten beschrieben, die speziell von der vordefinierten COMBOBOX-Klassenfensterprozedur verarbeitet werden.

Message BESCHREIBUNG
CB _ ADDSTRING Sendet eine LB _ ADDSTRING-Nachricht an das Listenfenster, um ein Listenelement hinzuzufügen.
CB _ DELETESTRING Sendet eine LB _ DELETESTRING-Nachricht an das Listenfenster, um ein Listenelement zu löschen.
CB _ DIR Fügt der Liste die Dateinamen hinzu, die den angegebenen Attributen und dem Pfad entsprechen.
CB _ FINDSTRING Sendet eine LB _ FINDSTRING-Nachricht an das Listenfenster. Diese Meldung gibt den Index des ersten Listenelements zurück, das mit dem angegebenen Text beginnt.
CB _ FINDSTRINGEXACT Sendet eine LB _ FINDSTRING-Nachricht an das Listenfenster. Diese Meldung gibt den Index des ersten Listenelements zurück, das genau mit dem angegebenen Text übereinstimmt.
CB _ GETCOUNT Sendet eine LB _ GETCOUNT-Nachricht an das Listenfenster. Sie gibt die Anzahl der Listenelemente zurück.
CB _ GETCURSEL Sendet eine LB _ GETCURSEL-Nachricht an das Listenfenster. Sie gibt ggf. den Index des aktuell ausgewählten Elements zurück.
CB _ GETDROPPEDCONTROLRECT Füllt die angegebene Rechteckstruktur mit den Bildschirmkoordinaten einer Dropdownliste auf.
CB _ GETDROPPEDSTATE Gibt TRUE zurück, wenn eine Dropdownliste geöffnet ist. andernfalls wird FALSE zurückgegeben.
CB _ GETDROPPEDWIDTH Gibt die minimale zulässige Breite der Dropdownliste in Pixel zurück.
CB _ GETEDITSEL Sendet eine EM _ GETSEL-Nachricht an das Edit-Steuerelement und gibt die Anfangs- und Endposition der aktuellen Auswahl zurück. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
CB _ GETEXTENDEDUI Gibt TRUE zurück, wenn das Kombinationsfeld ein Dropdown-Kombinationsfeld oder Dropdownlistenfeld ist und das Benutzeroberflächenflag erweitern festgelegt ist. andernfalls wird FALSE zurückgegeben.
CB _ GETHORIZONTALEXTENT Sendet eine LB _ GETHORIZONTALEXTENT-Nachricht an das Listenfenster. Sie gibt die scrollbare Breite der Dropdownliste in Pixel zurück.
CB _ GETITEMDATA Sendet eine LB _ GETITEMDATA-Nachricht an das Listenfenster. Sie gibt den Wert zurück, der dem angegebenen Listenelement zugeordnet ist.
CB _ GETITEMHEIGHT Sendet eine LB _ GETITEMHEIGHT-Nachricht an das Listenfenster. Sie gibt die Höhe des angegebenen vom Besitzer gezeichneten Listenelements in Pixel zurück.
CB _ GETLBTEXT Sendet eine LB _ GETTEXT-Nachricht an das Listenfenster. Der angegebene Listentext wird in den angegebenen Puffer kopiert.
CB _ GETLBTEXTLEN Sendet eine LB _ GETTEXTLEN-Nachricht an das Listenfenster. Sie gibt die Länge des angegebenen Listentexts in TCHARs zurück.
CB _ GETLOCALE Sendet eine LB _ GETLOCALE-Nachricht an das Listenfenster. Es gibt das aktuelle Locale für die Liste zurück.
CB _ GETMINVISIBLE Ruft die Mindestanzahl der sichtbaren Elemente in der Dropdownliste eines Kombinationsfelds ab.
CB _ GETTOPINDEX Sendet eine LB _ GETTOPINDEX-Nachricht an das Listenfenster. Sie gibt den Index des ersten sichtbaren Elements in der Dropdownliste zurück.
CB _ INITSTORAGE Sendet eine LB _ INITSTORAGE-Nachricht an das Listenfenster. Sie initialisiert Speicherplatz für die angegebene Anzahl von Elementen und die angegebene Anzahl von Bytes für Elementzeichenfolgen.
CB _ INSERTSTRING Sendet eine LB _ INSERTSTRING-Meldung an das Listenfenster. Es fügt ein Listenelement an der angegebenen Position ein.
CB _ LIMITTEXT Sendet eine EM _ LIMITTEXT-Nachricht an das Bearbeitungssteuer steuerelement. Sie legt die maximale Anzahl von Zeichen fest, die ein Benutzer in das Bearbeitungssteuerzeichen eingeben kann. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
CB _ RESETCONTENT Sendet eine LB _ RESETCONTENT-Nachricht an das Listenfenster und entfernt den Inhalt der Liste.
CB _ SELECTSTRING Sendet eine LB _ SELECTSTRING-Nachricht an das Listenfenster. Es wählt das erste Listenelement aus, sofern es mit den Zeichen im angegebenen Text beginnt.
CB _ SETCURSEL Sendet eine LB _ SETCURSEL-Nachricht an das Listenfenster und legt die aktuelle Auswahl fest.
CB _ SETDROPPEDWIDTH Legt die minimale zulässige Breite der Dropdownliste in Pixel fest.
CB _ SETEDITSEL Sendet eine EM _ SETSEL-Nachricht an das Edit-Steuerelement. Er wählt den angegebenen Textbereich aus. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
CB _ SETEXTENDEDUI Legt das Flag für die erweiterte Benutzeroberfläche fest oder legt es fest. Dieses Flag ändert die Schlüssel, die die Liste in einem Dropdown-Kombinationsfeld oder Dropdownlistenfeld öffnen und schließen. Wenn das Kombinationsfeld ein einfaches Kombinationsfeld ist, gibt die Fensterprozedur CB _ ERR zurück.
CB _ SETHORIZONTALEXTENT Sendet eine LB _ SETHORIZONTALEXTENT-Nachricht an das Listenfenster. Sie legt die bildlauffähige Breite der Dropdownliste in Pixel fest.
CB _ SETITEMDATA Sendet eine LB _ SETITEMDATA-Nachricht an das Listenfenster. Sie ordnet den angegebenen Wert einem Listenelement zu.
CB _ SETITEMHEIGHT Sendet eine LB _ SETITEMHEIGHT-Nachricht an das Listenfenster. Sie legt die Höhe des angegebenen vom Besitzer gezeichneten Listenelements oder des Auswahlfelds fest.
CB _ SETLOCALE Sendet eine LB _ SETLOCALE-Nachricht an das Listenfenster und legt das aktuelle Locale für die Liste fest. Das -Locale wirkt sich darauf aus, wie die Liste sortiert wird, wenn sie über den CBS _ SORT-Stil verfügt und Zeichenfolgen mit CB _ ADDSTRING hinzugefügt werden.
CB _ SETMINVISIBLE Legt die Mindestanzahl der sichtbaren Elemente in der Dropdownliste eines Kombinationsfelds fest.
CB _ SETTOPINDEX Sendet eine LB _ SETTOPINDEX-Nachricht an das Listenfenster. Es führt einen Bildlauf in der Dropdownliste durch, sodass sich das angegebene Element am oberen Ende des sichtbaren Bereichs befindet.
CB _ SHOWDROPDOWN Zeigt die Dropdownliste an oder blendet sie aus. Diese Meldung hat keine Auswirkungen auf einfache Kombinationsfelder.
WM _ CHAR Verarbeitet Zeicheneingaben. In Dropdownlistenfeldern wird diese Meldung an das Listenfenster übergeben, das die Auswahl auf das erste Element verschiebt, das mit dem angegebenen Zeichen beginnt. In einfachen Kombinationsfeldern und Dropdownfeldern wird diese Meldung an das Bearbeitungssteuer steuerelement übergeben.
WM _ CLEAR Löscht die Bearbeitungsauswahl. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuer steuerelement diese Meldung. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
_WM-BEFEHL Verarbeitet Benachrichtigungsmeldungen aus dem Bearbeitungs- und Listenfenster und sendet entsprechende Kombinationsfeld-Benachrichtigungscodes an das übergeordnete Fenster.
Bei Benachrichtigungen zum Bearbeiten von Steuerelementen kann die Fensterprozedur die aktuelle Auswahl, den Caretindex und den obersten Index des Listenfensters aktualisieren. Bei Listenbenachrichtigungsmeldungen kann die Fensterprozedur den Inhalt des Auswahlfelds aktualisieren.
WM _ COMPAREITEM Übergibt die Meldung an das übergeordnete Fenster, sodass die Anwendung die relative Sortierposition von zwei vom Besitzer gezeichneten Listenelementen angeben kann. Das Kombinationsfeldfenster empfängt diese Meldung aus dem Listenfenster.
WM _ COPY Kopiert die Bearbeitungsauswahl in die Zwischenablage. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuer steuerelement diese Meldung. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
WM _ CREATE Initialisiert das Kombinationsfeld.
WM _ CUT Löscht die Bearbeitungsauswahl und platziert sie in der Zwischenablage. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Meldung. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
WM _ DELETEITEM Übergibt die Meldung an das übergeordnete Fenster und benachrichtigt die Anwendung, dass ein Listenelement gelöscht wurde. Das Kombinationsfeldfenster empfängt diese Meldung aus dem Listenfenster.
WM _ DRAWITEM Übergibt die Meldung an das übergeordnete Fenster, sodass die Anwendung das angegebene Listenelement zeichnen kann. Das Kombinationsfeldfenster empfängt diese Meldung aus dem Listenfenster. Die Fensterprozedur kann auch diese Meldung erstellen, damit die Anwendung das Auswahlfeld eines Dropdownlistenfelds zeichnet.
WM _ ENABLE Legt den Zustand fest, um Maus- und Tastatureingaben zu aktivieren oder zu unterbinden.
WM _ ERASEBKGND Gibt 1 zurück, was angibt, dass der Hintergrund gelöscht wird.
WM _ GETDLGCODE Gibt eine Kombination der _ DLG WANTCHARS- und _ DLGC-WANTWS-Werte zurück.
WM _ GETFONT Gibt das Handle für die aktuelle Schriftart zurück, mit der das Kombinationsfeld seinen Text zeichnet.
WM _ GETTEXT Kopiert den Inhalt des Auswahlfelds in den angegebenen Puffer. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Meldung.
WM _ GETTEXTLENGTH Gibt die Länge des Texts im Auswahlfeld in Zeichen zurück. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Meldung.
WM _ KEYDOWN Verarbeitet Tastatureingaben, die keine Zeichen sind. In Dropdownlistenfeldern wird diese Meldung an das Listenfenster gesendet, das sich selbst ein- oder ausblenden oder die aktuelle Auswahl oder den Caretindex ändern kann. In einfachen Und Dropdown-Kombinationsfeldern wird diese Meldung an das Bearbeitungssteuerelement übergeben. Das Bearbeitungssteuerelement übergibt bestimmte Schlüssel an das Listenfenster, z. B. die NACH-OBEN- und NACH-UNTEN-TASTE und die F4-Taste.
WM _ KILLFOCUS Blendet die Hervorhebung im Auswahlfeld aus und schließt ggf. die Dropdownliste. Wenn das Fenster, das den Eingabefokus erhält, Teil des Kombinationsfelds ist (z. B. das Bearbeitungssteuerelement), wird diese Meldung ignoriert.
WM _ LBUTTONDBLCLK Identisch mit WM _ LBUTTONDOWN.
WM _ LBUTTONDOWN Legt den Fokus auf das Kombinationsfeld fest und kann die Liste für Dropdown-Kombinationsfelder und Dropdownlisten öffnen oder schließen. Wenn die Liste geöffnet wird, erfasst die Fensterprozedur die Maus, um die Auswahl durch Ziehen und Loslassen der Maustaste zu aktivieren.
WM _ LBUTTONUP Gibt die Mausaufnahme frei, wenn die Maus die Liste geöffnet hat.
WM _ MEASUREITEM Sendet die Nachricht an das übergeordnete Fenster, sodass die Anwendung den Inhalt der angegebenen MEASUREITEMSTRUCT-Struktur ändern kann. Das Kombinationsfeldfenster empfängt diese Meldung aus dem Listenfenster.
WM _ MOUSEMOVE Sendet die Meldung an das Listenfenster, wenn die Maus die Liste geöffnet hat und die Maustaste weiterhin gedrückt ist. Dadurch kann ein Benutzer ein Element auswählen, indem er den Mauszeiger auf ein Listenelement zieht und dann die Schaltfläche loslässt.
WM _ NCCREATE Ordnet eine interne Datenstruktur zu, die von der Kombinationsfeldfensterprozedur verwendet wird.
WM _ NCDESTROY Gibt Ressourcen frei, die als Reaktion auf die WM _ NCCREATE-Nachricht zugeordnet sind.
WM _ PAINT Zeichnet den ungültigen Bereich des Kombinationsfelds. Wenn wParam nicht NULL ist, wird davon ausgegangen, dass es sich um ein Gerätekontexthandle (DC) handelt, das von einer Unterklassenfunktion übergeben wird. Die Fensterprozedur verwendet den angegebenen DC, anstatt BeginPaint und EndPaint aufzurufen.
_WM-EINFÜGE Ersetzt die Bearbeitungsauswahl durch den Inhalt der Zwischenablage. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Meldung. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
WM _ SETFOCUS Legt den Fokus auf das Bearbeitungssteuerelement fest oder schaltet in Dropdownlistenfeldern das Auswahlfeld um und schaltet das Caretelement im Listenfenster ein.
WM _ SETFONT Speichert das angegebene Schriftarthandle in einer internen Struktur, passt die Abmessungen des Auswahlfelds und der Liste an und macht das Kombinationsfeldfenster ungültig. Text im Auswahlfeld und die Liste werden in der gespeicherten Schriftart angezeigt.
WM _ SETREDRAW Legt das Neuzeichnerflag fest oder löscht es. Wenn das neu gezeichnete Flag gelöscht wird, wird das Kombinationsfeld erst neu gezeichnet, wenn das Flag erneut festgelegt wird.
WM _ SETTEXT Legt den Inhalt des Bearbeitungssteuerelements fest. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Meldung. In Dropdownlistenfeldern gibt die Fensterprozedur CB _ ERR zurück.
_WM-GRÖßE Bei Bedarf wird die Größe der untergeordneten Fenster geändert.
WM _ SYSKEYDOWN Öffnet oder schließt die Dropdownliste, je nachdem, welche Pfeiltaste der Benutzer gedrückt hat.

Alle anderen Nachrichten werden zur Standardverarbeitung an die DefWindowProc-Funktion übergeben.