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.