Kombinationsfeldfeatures

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

Besonderheiten

Es gibt spezielle Meldungen und Funktionen, die es einer Anwendung ermöglichen, einen Verzeichniseintrag in einem Kombinationsfeld anzuzeigen, Daten Listenelementen in einem Kombinationsfeld zuzuordnen und die Tastaturschnittstelle für ein Dropdownkombinationsfeld oder Dropdownlistenfeld zu ändern.

Verzeichnislisten

Eine Anwendung kann die Namen von Dateien oder Unterverzeichnissen zu einem Kombinationsfeld hinzufügen, indem sie die CB_DIR Nachricht an sie sendet. Der wParam-Parameter für diese Nachricht 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 Satz von Kriterien entsprechen. Die DlgDirSelectComboBoxEx-Funktion ruft die aktuelle Auswahl in einem von DlgDirListComboBox initialisierten Kombinationsfeld ab. Diese Funktionen ermöglichen es dem Benutzer, ein Laufwerk, ein Verzeichnis oder eine Datei aus einem Kombinationsfeld auszuwählen, ohne den Speicherort und den Namen der Datei einzugeben.

Die Funktionen DlgDirListComboBox und DlgDirSelectComboBoxEx sowie die CB_DIR Nachricht ähneln den Funktionen DlgDirList und DlgDirSelectEx und der LB_DIR Nachricht, die mit Listenfeldern verwendet wird.

Daten, die Listenelementen zugeordnet sind

Eine Anwendung kann den Listenelementen in einem Kombinationsfeld Daten zuordnen. Die CB_SETITEMDATA Nachricht verknüpft einen DWORD-Wert einem Listenelement, und die CB_GETITEMDATA ruft den Einem Listenelement zugeordneten Wert ab.

Im Beispiel in Erstellen eines Kombinationsfelds für besitzergezeichnete Elemente 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 einem Listenelement ein Handle oder zeiger zuzuordnen. Wenn ja, kann eine Anwendung eine WM_DELETEITEM Nachricht verarbeiten, um das angegebene Objekt zu löschen oder freizugeben, wenn das Listenelement gelöscht wird.

Die erweiterte Benutzeroberfläche

Dropdownkombinationsfelder 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 die NACH-UNTEN-TASTE ändert die aktuelle Auswahl. In einem Kombinationsfeld mit der erweiterten Benutzeroberfläche ist die F4-Taste jedoch deaktiviert, und das Drücken der NACH-UNTEN-TASTE öffnet die Dropdownliste. Darüber hinaus hat das Mausrad, das normalerweise durch die Elemente in der Liste scrollt, 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 ermöglicht die erweiterte Benutzeroberfläche. ein FALSE-Wert legt die Standardbenutzeroberfläche fest. Um zu bestimmen, ob ein Kombinationsfeld die erweiterte Benutzeroberfläche verwendet, kann eine Anwendung die CB_GETEXTENDEDUI Nachricht an das Kombinationsfeld senden.

Hinweisbanner

Hinweisbanner sind ein neues Feature von Bearbeitungssteuerelementen und Kombinationsfelden. Der Zweck eines Hinweisbanners besteht darin, dem Benutzer einen Hinweis zum Zweck eines Bearbeitungssteuerelements oder Kombinationsfelds zu geben. Der folgende Screenshot zeigt ein Bearbeitungssteuerelement mit dem Hinweistext "Suchen".

Screenshot eines Bearbeitungssteuerelements mit dem Hinweistext

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

Kombinationsfeldbenachrichtigungen

Nachrichten aus Kombinationsfelden 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 Dropdownkombinationsfeld oder Dropdownlistenfeld kurz vor dem Schließen steht.
CBN_DBLCLK Gibt an, dass der Benutzer in einem einfachen Kombinationsfeld auf ein Listenelement doppelklicken hat.
CBN_DROPDOWN Gibt an, dass die Liste in einem Dropdownkombinationsfeld oder Dropdownlistenfeld geöffnet wird.
CBN_EDITCHANGE Gibt an, dass der Benutzer den Text im Bearbeitungssteuerelement eines einfachen Oder Dropdownkombinationsfelds 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 Dropdownkombinationsfelds 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 verliert.
CBN_SELCHANGE Gibt an, dass sich die aktuelle Auswahl geändert hat.
CBN_SELENDCANCEL Gibt an, dass die in der Dropdownliste vorgenommene Auswahl, während sie nach unten gelöscht wurde, ignoriert werden sollte.
CBN_SELENDOK Gibt an, dass die Dropdownliste "Auswahl getroffen" akzeptiert werden soll, während sie nach unten gelöscht wurde.
CBN_SETFOCUS Gibt an, dass das Kombinationsfeld den Eingabefokus erhalten hat.

 

Standardverhalten von Kombinationsfelden

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 die Dateinamen hinzu, die den angegebenen Attributen und dem angegebenen Pfad entsprechen.
CB_FINDSTRING Sendet eine LB_FINDSTRING Nachricht an das Listenfenster. Diese Nachricht gibt den Index des ersten Listenelements zurück, der mit dem angegebenen Text beginnt.
CB_FINDSTRINGEXACT Sendet eine LB_FINDSTRING Nachricht an das Listenfenster. Diese Nachricht gibt den Index des ersten Listenelements zurück, das genau dem angegebenen Text entspricht.
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. Er gibt den Index des aktuell ausgewählten Elements zurück, falls vorhanden.
CB_GETDROPPEDCONTROLRECT Füllt die angegebene Rechteckstruktur mit den Bildschirmkoordinaten einer Dropdownliste aus.
CB_GETDROPPEDSTATE Gibt TRUE zurück, wenn eine Dropdownliste geöffnet ist. Andernfalls wird FALSE zurückgegeben.
CB_GETDROPPEDWIDTH Gibt die zulässige Mindestbreite der Dropdownliste in Pixel zurück.
CB_GETEDITSEL Sendet eine EM_GETSEL Nachricht an das Bearbeitungssteuerelement 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 dropdown-Listenfeld ist und das Flag "Benutzeroberfläche erweitern" festgelegt ist. Andernfalls wird FALSE zurückgegeben.
CB_GETHORIZONTALEXTENT Sendet eine LB_GETHORIZONTALEXTENT Nachricht an das Listenfenster. Es gibt die scrollbare Breite der Dropdownliste in Pixel zurück.
CB_GETITEMDATA Sendet eine LB_GETITEMDATA Nachricht an das Listenfenster. Er 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 wird das aktuelle Gebietsschema für die Liste zurückgegeben.
CB_GETMINVISIBLE Ruft die Mindestanzahl sichtbarer Elemente in der Dropdownliste eines Kombinationsfelds ab.
CB_GETTOPINDEX Sendet eine LB_GETTOPINDEX-Nachricht an das Listenfenster. Er gibt den Index des ersten sichtbaren Elements in der Dropdownliste zurück.
CB_INITSTORAGE Sendet eine LB_INITSTORAGE Nachricht an das Listenfenster. Es initialisiert den Speicherplatz für die angegebene Anzahl von Elementen und die angegebene Anzahl von Bytes für Elementzeichenfolgen.
CB_INSERTSTRING Sendet eine LB_INSERTSTRING Nachricht an das Listenfenster. Es fügt ein Listenelement an der angegebenen Position ein.
CB_LIMITTEXT Sendet eine EM_LIMITTEXT Nachricht an das Bearbeitungssteuerelement. Es legt die maximale Anzahl von Zeichen fest, die ein Benutzer in das Bearbeitungssteuerelement 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 ggf. das erste Listenelement aus, das 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 zulässige Mindestbreite der Dropdownliste in Pixel fest.
CB_SETEDITSEL Sendet eine EM_SETSEL Nachricht an das Bearbeitungssteuerelement. Es 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 löscht es. Dieses Flag ändert die Schlüssel, mit denen die Liste in einem Dropdownkombinationsfeld oder Dropdownlistenfeld geöffnet und geschlossen wird. 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 scrollbare Breite der Dropdownliste in Pixel fest.
CB_SETITEMDATA Sendet eine LB_SETITEMDATA Nachricht an das Listenfenster. Der angegebene Wert wird einem Listenelement zugeordnet.
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 Gebietsschema für die Liste fest. Das Gebietsschema wirkt sich auf die Sortierung der Liste aus, wenn sie die CBS_SORT Format aufweist und Zeichenfolgen mithilfe von CB_ADDSTRING hinzugefügt werden.
CB_SETMINVISIBLE Legt die Mindestanzahl sichtbarer Elemente in der Dropdownliste eines Kombinationsfelds fest.
CB_SETTOPINDEX Sendet eine LB_SETTOPINDEX Nachricht an das Listenfenster. In der Dropdownliste wird ein Bildlauf ausgeführt, sodass sich das angegebene Element am oberen Rand des sichtbaren Bereichs befindet.
CB_SHOWDROPDOWN Blendet die Dropdownliste ein oder aus. Diese Meldung hat keine Auswirkungen auf einfache Kombinationsfelder.
WM_CHAR Verarbeitet die Zeicheneingabe. In Dropdownlistenfeldern wird diese Meldung an das Listenfenster übergeben, in dem die Auswahl auf das erste Element verschoben wird, das mit dem angegebenen Zeichen beginnt. In einfachen Kombinationsfeldern und Dropdownfeldern wird diese Meldung an das Bearbeitungssteuerelement übergeben.
WM_CLEAR Löscht die Bearbeitungsauswahl. In einfachen Kombinationsfeldern und Dropdown-Kombinationsfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht. In Dropdownlistenfeldern gibt die Fensterprozedur CB_ERR zurück.
WM_COMMAND Verarbeitet Benachrichtigungen aus dem Bearbeitungssteuerelement- und Listenfenster und sendet entsprechende Kombinationsfeldbenachrichtigungscodes 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 Listenbenachrichtigungen kann die Fensterprozedur den Inhalt des Auswahlfelds aktualisieren.
WM_COMPAREITEM Übergibt die Nachricht 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 Dropdown-Kombinationsfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht. 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 Nachricht. In Dropdownlistenfeldern gibt die Fensterprozedur CB_ERR zurück.
WM_DELETEITEM Übergibt die Nachricht an das übergeordnete Fenster und benachrichtigt die Anwendung darüber, dass ein Listenelement gelöscht wurde. Das Kombinationsfeldfenster empfängt diese Meldung aus dem Listenfenster.
WM_DRAWITEM Übergibt die Nachricht 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 malt.
WM_ENABLE Legt den Zustand fest, um Maus- und Tastatureingaben zu aktivieren oder zu verbieten.
WM_ERASEBKGND Gibt 1 zurück, was angibt, dass der Hintergrund gelöscht wird.
WM_GETDLGCODE Gibt eine Kombination aus den werten DLG_WANTCHARS und DLGC_WANTARROWS zurück.
WM_GETFONT Gibt das Handle auf 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 Nachricht.
WM_GETTEXTLENGTH Gibt die Länge des Texts im Auswahlfeld in Zeichen zurück. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht.
WM_KEYDOWN Verarbeitet Tastatureingaben ohne Zeichen. In Dropdownlistenfeldern wird diese Nachricht an das Listenfenster gesendet, das sich selbst ein- oder ausblenden oder die aktuelle Auswahl oder den Caret-Index ändern kann. In einfachen Kombinationsfeldern und Dropdownfeldern 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 bei Bedarf die Dropdownliste. Wenn das Fenster, das den Eingabefokus empfängt, Teil des Kombinationsfelds ist (z. B. das Steuerelement bearbeiten), wird diese Meldung ignoriert.
WM_LBUTTONDBLCLK Identisch mit WM_LBUTTONDOWN.
WM_LBUTTONDOWN Legt den Fokus auf das Kombinationsfeld fest, und für Dropdownkombinationen und Dropdownlisten kann die Liste geöffnet oder geschlossen werden. 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 ab, 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 Nachricht im Listenfenster, wenn die Maus die Liste geöffnet hat und die Maustaste weiterhin nach unten 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 Weist eine interne Datenstruktur zu, die von der Kombinationsfeldfensterprozedur verwendet wird.
WM_NCDESTROY Gibt Ressourcen frei, die als Reaktion auf die WM_NCCREATE Nachricht zugewiesen wurden.
WM_PAINT Zeichnet den ungültigen Bereich des Kombinationsfelds. Wenn wParam nicht NULL ist, wird davon ausgegangen, dass es sich um ein Dc-Handle (Device Context) handelt, das von einer Unterklassenfunktion übergeben wird. Die Fensterprozedur verwendet den angegebenen DC, anstatt BeginPaint und EndPaint aufzurufen.
WM_PASTE Ersetzt die Bearbeitungsauswahl durch den Inhalt der Zwischenablage. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht. In Dropdownlistenfeldern gibt die Fensterprozedur CB_ERR zurück.
WM_SETFOCUS Legt den Fokus auf das Steuerelement bearbeiten fest oder in Dropdownlistenfeldern invertiert das Auswahlfeld und aktiviert das Caret im Listenfenster.
WM_SETFONT Speichert den angegebenen Schrifthandle in einer internen Struktur, passt die Dimensionen des Auswahlfelds und der Liste an und ungültig das Kombinationsfeldfenster. Text im Auswahlfeld und die Liste wird in der gespeicherten Schriftart angezeigt.
WM_SETREDRAW Legt das Redraw-Flag fest oder löscht es. Wenn das Redraw-Flag deaktiviert ist, wird das Kombinationsfeld erst neu gestrichen, wenn das Flag erneut festgelegt wird.
WM_SETTEXT Legt den Inhalt des Bearbeitungssteuerelements fest. In einfachen Kombinationsfeldern und Dropdownfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht. In Dropdownlistenfeldern gibt die Fensterprozedur CB_ERR zurück.
WM_SIZE Ändert bei Bedarf die Größe der untergeordneten Fenster.
WM_SYSKEYDOWN Die Dropdownliste wird geöffnet oder geschlossen, je nachdem, welche Pfeiltaste der Benutzer gedrückt hat.

 

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