Die Combobox verhält sich wie eine Listbox mit angeschlossenem Editfeld.
Stile: Grundformen der Combobox
Man kann zwischen drei Stilen wählen:
- CBS_SIMPLE
- Die Liste befindet sich ständig aufgeklappt unter dem Editfeld.
- CBS_DROPDOWN
- Hier klappt die Liste auf Knopfdruck aus. Ansonsten ist nur das Editfeld und die Schaltfläche zum Aufklappen zu sehen.
- CBS_DROPDOWNLIST
- Das Editfeld ist nicht editierbar, sondern nur mit Werten zu füllen, die sich in der Liste befinden.
Ereignisse der Combobox
Ereignis | Eintritt |
---|---|
CBN_EDITCHANGE | erscheint bei jedem Zeichen, das ins Editfeld getippt wird |
CBN_EDITUPDATE | |
CBN_CLOSEUP | Immer, wenn die Liste wieder hochschnappt |
CBN_DROPDOWN | immer, wenn die Liste herunterklappt |
CBN_DBLCLK | nur bei der statischen Liste auf Doppelklick |
CBN_KILLFOCUS | wenn die Combobox aktiviert wird |
CBN_SETFOCUS | wenn die Combobox deaktiviert wird |
CBN_SELCHANGE | wenn ein Element der Liste gewählt wurde, bevor es in das Editfeld übernommen wird. |
CBN_SETFOCUS |
Aktionen
Hinzufügen und Entfernen von Einträgen
Nachricht | wParam | lParam | Rückgabe |
---|---|---|---|
CB_ADDSTRING | 0 | Zeiger auf den String | Index des neuen Items, bei Fehler LB_ERR |
CB_INSERTSTRING | Zielindex des Items, -1 für hinten | Zeiger auf den String | bei Fehler LB_ERR |
CB_DELETESTRING | Index des Items | 0 | bei Fehler LB_ERR |
CB_RESETCONTENT | 0 | 0 | bei Fehler LB_ERR |
AddString hängt Einträge hinten an. ResetContent löscht alle Einträge.
Daten hinterlegen
Damit man den Listbox-Einträgen Programmdaten eindeutig zuordnen kann, ist es möglich, jedem Eintrag einen 4-Byte-Wert hinzuzufügen: genug für einen Zeiger auch auf größere Datenobjekte.Nachricht | wParam | lParam | Rückgabe |
---|---|---|---|
CB_SETITEMDATA | Index des Items | 4-Byte-Data | Bei Fehler LB_ERR |
CB_GETITEMDATA | Index des Items | NULL | 4-Byte-Data |
Sonstige Aktionen
Selektion eines Elements
SendMessage(hWndCombo, CB_SETCURSEL, nIndex, 0); |
Selektiert aus der Liste den Eintrag mit der Nummer nIndex. Die Zählung beginnt bei 0.
Selektion eines Strings
SendMessage(hWndCombo, CB_SELECTSTRING, nIndex, (ULONG)SelString); |
Sucht und selektiert aus der Liste den Eintrag, der mit SelString beginnt. Die Sucher beginnt hinter dem Element nIndex. Soll die komplette Liste durchsucht werden, ist nIndex=-1. Der String wird im Editfeld eingetragen.