Freigeben über


Kombinationsfeldfeatures

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

Sonderfunktionen

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 Dropdown-Listenfeld zu ändern.

Verzeichnislisten

Eine Anwendung kann die Namen von Dateien oder Unterverzeichnissen zu einem Kombinationsfeld hinzufügen, indem sie die CB_DIR Nachricht an dieses senden. 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 funktion DlgDirListComboBox 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 einer bestimmten Gruppe von Kriterien entsprechen. Die funktion DlgDirSelectComboBoxEx ruft die aktuelle Auswahl in einem Kombinationsfeld ab, das von DlgDirListComboBoxinitialisiert wird. 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 funktionen und die CB_DIR Nachricht ähneln den funktionen DlgDirList und DlgDirSelectEx und der mit Listenfeldern verwendeten LB_DIR Nachricht.

Mit Listenelementen verknüpfte Daten

Eine Anwendung kann Daten mit den Listenelementen in einem Kombinationsfeld verknüpfen. Die CB_SETITEMDATA Nachricht ordnet einem Listenelement einen DWORD-wert zu, und die CB_GETITEMDATA ruft den einem Listenelement zugeordneten Wert ab.

Das Beispiel in Erstellen eines gezeichneten Kombinationsfelds "Besitzer" verwendet Elementdaten, um jedem Element in einem Dropdown-Listenfeld 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

Dropdown-Kombinationsfelder und Dropdownlistenfelder unterstützen eine alternative Tastaturschnittstelle, die als erweiterte Benutzeroberflächebezeichnet wird. Standardmäßig öffnet oder schließt die F4-TASTE die Liste, und die NACH-UNTEN-TASTE ä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, keine Funktion, wenn die erweiterte Benutzeroberfläche festgelegt wird.

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 festzustellen, 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 für Bearbeitungssteuerelemente und Kombinationsfelder. 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 "Suchen".

Screenshot eines Bearbeitungssteuerelements mit dem Hinweistext

Der Text eines Hinweisbanners wird angezeigt, wenn ein Bearbeitungssteuerelement keinen Text aufweist oder ein Kombinationsfeld keine Auswahl hat. Wenn der Benutzer Text in das Bearbeitungssteuerelement eingibt oder eine Auswahl in einem Kombinationsfeld vorgibt, wird das Hinweisbanner ausgeblendet. Standardmäßig wird das Markerbanner 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 Kombinationsfeld-Benachrichtigungscodes verarbeiten.

Benachrichtigungscode Beschreibung
CBN_CLOSEUP Gibt die Liste in einem Dropdown-Kombinationsfeld oder Dropdown-Listenfeld an, das geschlossen werden soll.
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 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 wird.
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 verliert.
CBN_SELCHANGE Gibt an, dass sich die aktuelle Auswahl geändert hat.
CBN_SELENDCANCEL Gibt an, dass die in der Dropdownliste getroffene Auswahl, während sie gelöscht wurde, ignoriert werden soll.
CBN_SELENDOK Gibt an, dass die getroffene Dropdownliste, während sie gelöscht wurde, akzeptiert werden soll.
CBN_SETFOCUS Gibt an, dass das Kombinationsfeld den Eingabefokus erhalten hat.

 

Standardverhalten des Kombinationsfelds

In dieser folgenden Tabelle werden die Meldungen beschrieben, die speziell von der vordefinierten COMBOBOX-Klassenfensterprozedur behandelt werden.

Nachricht 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 Pfad zur Liste entsprechen.
CB_FINDSTRING Sendet eine LB_FINDSTRING Nachricht an das Listenfenster. Diese Nachricht 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 Nachricht gibt den Index des ersten Listenelements zurück, das exakt 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. Wenn vorhanden, wird der Index des aktuell ausgewählten Elements zurückgegeben.
CB_GETDROPPEDCONTROLRECT Füllt die angegebene Rechteckstruktur mit den Bildschirmkoordinaten einer Dropdownliste.
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 für die Erweiterung der Benutzeroberfläche festgelegt ist; andernfalls wird FALSE-zurückgegeben.
CB_GETHORIZONTALEXTENT Sendet eine LB_GETHORIZONTALEXTENT Nachricht an das Listenfenster. Sie gibt die bildlauffähige Breite der Dropdownliste in Pixel zurück.
CB_GETITEMDATA Sendet eine LB_GETITEMDATA Nachricht an das Listenfenster. Der Wert, der dem angegebenen Listenelement zugeordnet ist, wird zurückgegeben.
CB_GETITEMHEIGHT Sendet eine LB_GETITEMHEIGHT Nachricht an das Listenfenster. Es gibt die Höhe des angegebenen vom Besitzer gezeichneten Listenelements in Pixeln zurück.
CB_GETLBTEXT Sendet eine LB_GETTEXT Nachricht an das Listenfenster. Er kopiert den angegebenen Listentext in den angegebenen Puffer.
CB_GETLBTEXTLEN Sendet eine LB_GETTEXTLEN Nachricht an das Listenfenster. Sie gibt die Länge des angegebenen Listentexts in TCHARszurück.
CB_GETLOCALE Sendet eine LB_GETLOCALE Nachricht an das Listenfenster. Es gibt das aktuelle Gebietsschema 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. Der Index des ersten sichtbaren Elements in der Dropdownliste wird zurückgegeben.
CB_INITSTORAGE Sendet eine LB_INITSTORAGE Nachricht an das Listenfenster. Er initialisiert platz 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. Sie legt die maximale Anzahl von Zeichen fest, die ein Benutzer im 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. Wenn vorhanden, wird das erste Listenelement markiert, 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 minimale zulässige Breite in Pixel der Dropdownliste fest.
CB_SETEDITSEL Sendet eine EM_SETSEL Nachricht an das Bearbeitungssteuerelement. Er markiert den angegebenen Textbereich. In Dropdownlistenfeldern gibt die Fensterprozedur CB_ERR zurück.
CB_SETEXTENDEDUI Legt das erweiterte Benutzeroberflächen-Flag fest oder löscht es. Dieses Kennzeichen ändert die Tasten, die die Liste in einem Dropdown-Kombinationsfeld oder Dropdown-Listenfeld ö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. Er ordnet den angegebenen Wert einem Listenelement zu.
CB_SETITEMHEIGHT Sendet eine LB_SETITEMHEIGHT Nachricht an das Listenfenster. Es legt die Höhe des angegebenen besitzergezeichneten 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 darauf aus, wie die Liste sortiert wird, wenn die CBS_SORT Formatvorlage und Zeichenfolgen mithilfe von CB_ADDSTRINGhinzugefü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 Rand des sichtbaren Bereichs befindet.
CB_SHOWDROPDOWN Blendet die Dropdownliste ein oder aus. Diese Meldung wirkt sich nicht auf einfache Kombinationsfelder aus.
WM_CHAR Verarbeitet Zeicheneingaben. In Dropdownlistenfeldern wird diese Nachricht an das Listenfenster übergeben, das die Auswahl an das erste Element verschiebt, das mit dem angegebenen Zeichen beginnt. In einfachen und Dropdown-Kombinationsfeldern wird diese Meldung an das Bearbeitungssteuerelement übergeben.
WM_CLEAR Löscht die Bearbeitungsauswahl. In einfachen 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 Kombinationsfeld-Benachrichtigungscodes an das übergeordnete Fenster.
Bei Bearbeitungssteuerelementbenachrichtigungen 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 Nachricht aus dem Listenfenster.
WM_COPY Kopiert die Bearbeitungsauswahl in die Zwischenablage. In einfachen 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 und Dropdown-Kombinationsfeldern 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, dass ein Listenelement gelöscht wurde. Das Kombinationsfeldfenster empfängt diese Nachricht aus dem Listenfenster.
WM_DRAWITEM Übergibt die Nachricht an das übergeordnete Fenster, mit dem die Anwendung das angegebene Listenelement zeichnen kann. Das Kombinationsfeldfenster empfängt diese Nachricht aus dem Listenfenster. Die Fensterprozedur kann auch aus dieser Meldung stammen, damit die Anwendung das Auswahlfeld eines Dropdown-Listenfelds zeichnet.
WM_ENABLE Legt den Zustand fest, um Maus- und Tastatureingaben zu aktivieren oder zu verbieten.
WM_ERASEBKGND Gibt 1 zurück, der angibt, dass der Hintergrund gelöscht wird.
WM_GETDLGCODE Gibt eine Kombination der werte DLG_WANTCHARS und DLGC_WANTARROWS zurück.
WM_GETFONT Gibt das Handle an 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 und Dropdown-Kombinationsfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht.
WM_GETTEXTLENGTH Gibt die Länge des Texts im Auswahlfeld in Zeichen zurück. In einfachen und Dropdown-Kombinationsfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht.
WM_KEYDOWN Verarbeitet nicht character Tastatureingaben. In Dropdown-Listenfeldern wird diese Nachricht an das Listenfenster gesendet, das sich selbst ein- oder ausblenden kann, oder die aktuelle Auswahl oder den Caretindex ändern. In einfachen und Dropdown-Kombinationsfeldern wird diese Meldung an das Bearbeitungssteuerelement übergeben. Das Bearbeitungssteuerelement übergibt bestimmte Tasten 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 die Dropdownliste bei Bedarf. Wenn das Fenster, das den Eingabefokus empfängt, 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 für Dropdown-Kombinationsfelder 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 frei, wenn die Maus die Liste geöffnet hat.
WM_MEASUREITEM Sendet die Nachricht in das übergeordnete Fenster, sodass die Anwendung den Inhalt der angegebenen MEASUREITEMSTRUCT Struktur ändern kann. Das Kombinationsfeldfenster empfängt diese Nachricht aus dem Listenfenster.
WM_MOUSEMOVE Sendet die Nachricht in das Listenfenster, wenn die Maus die Liste geöffnet hat und die Maustaste noch gedrückt ist. Auf diese Weise 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 Kombinationsfeld-Fensterprozedur 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 Von einer Unterklassenfunktion übergebenes Handle (Device Context, DC) handelt. Die Fensterprozedur verwendet den angegebenen DC statt BeginPaint- und EndPaint-aufzurufen.
WM_PASTE Ersetzt die Bearbeitungsauswahl durch den Inhalt der Zwischenablage. In einfachen und Dropdown-Kombinationsfeldern verarbeitet das Bearbeitungssteuerelement diese Nachricht. In Dropdownlistenfeldern gibt die Fensterprozedur CB_ERR zurück.
WM_SETFOCUS Legt den Fokus auf das Bearbeitungssteuerelement fest, oder in Dropdown-Listenfeldern wird das Auswahlfeld invertiert und das Caret im Listenfenster aktiviert.
WM_SETFONT Speichert den angegebenen Schriftpunkt 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 die Kennzeichnung für das Neuzeichnen fest oder löscht sie. Wenn das Kennzeichen erneut gezeichnet wird, wird das Kombinationsfeld erst aktualisiert, wenn die Kennzeichnung erneut festgelegt wird.
WM_SETTEXT Legt den Inhalt des Bearbeitungssteuerelements fest. In einfachen und Dropdown-Kombinationsfeldern 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 Ö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.