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
- Daten, die Listenelementen zugeordnet sind
- Die erweiterte Benutzeroberfläche
- Hinweisbanner
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".
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.