ComboBoxMessageEnum
Deklaration
' Bei CB_BASE beginnen alle Combobox-Nachrichten
Const CB_BASE As Long = &H140
' Auflistung der möglichen Nachrichten einer Combobox
Enum ComboBoxMessageEnum
CB_GETEDITSEL = CB_BASE + &H0
CB_LIMITTEXT = CB_BASE + &H1
CB_SETEDITSEL = CB_BASE + &H2
CB_ADDSTRING = CB_BASE + &H3
CB_DELETESTRING = CB_BASE + &H4
CB_DIR = CB_BASE + &H5
CB_GETCOUNT = CB_BASE + &H6
CB_GETCURSEL = CB_BASE + &H7
CB_GETLBTEXT = CB_BASE + &H8
CB_GETLBTEXTLEN = CB_BASE + &H9
CB_INSERTSTRING = CB_BASE + &HA
CB_RESETCONTENT = CB_BASE + &HB
CB_FINDSTRING = CB_BASE + &HC
CB_SELECTSTRING = CB_BASE + &HD
CB_SETCURSEL = CB_BASE + &HE
CB_SHOWDROPDOWN = CB_BASE + &HF
CB_GETITEMDATA = CB_BASE + &H10
CB_SETITEMDATA = CB_BASE + &H11
CB_GETDROPPEDCONTROLRECT = CB_BASE + &H12
CB_SETITEMHEIGHT = CB_BASE + &H13
CB_GETITEMHEIGHT = CB_BASE + &H14
CB_SETEXTENDEDUI = CB_BASE + &H15
CB_GETEXTENDEDUI = CB_BASE + &H16
CB_GETDROPPEDSTATE = CB_BASE + &H17
CB_FINDSTRINGEXACT = CB_BASE + &H18
CB_SETLOCALE = CB_BASE + &H19
CB_GETLOCALE = CB_BASE + &H1A
CB_GETTOPINDEX = CB_BASE + &H1B
CB_SETTOPINDEX = CB_BASE + &H1C
CB_GETHORIZONTALEXTENT = CB_BASE + &H1D
CB_SETHORIZONTALEXTENT = CB_BASE + &H1E
CB_GETDROPPEDWIDTH = CB_BASE + &H1F
CB_SETDROPPEDWIDTH = CB_BASE + &H20
CB_INITSTORAGE = CB_BASE + &H21
CB_MSGMAX = CB_BASE + &H22
End Enum
Die Nachrichten können mit SendMessage oder PostMessage versandt werden.
Beschreibung
CB_ADDSTRING
Wert (hex/dez): &H143 = 323
Diese Nachricht wird an eine Combobox gesandt, wenn ein neues Element an das Ende der Liste der Combobox geschrieben werden soll.
wParam muß den Wert 0 enthalten, lParam den Zeiger auf die hinzuzufügende Zeichenkette. Die Zeichenkette muß mit einem Nullbyte (vbNullChar) abgeschlossen sein.
Zurückgegeben wird der Index des eingefügten Elements. Falls ein Fehler auftritt, wird CB_ERR zurückgegeben. Falls nicht ausreichend Speicher zur Verfügung steht, um alle Elemente in die Liste aufzunehmen, wird CB_ERRSPACE zurückgegeben.
Beispiel
Dim lngResult As Long
Dim strText As String
lngResult = SendMessageLong(Combo1.hWnd, _
ComboBoxMessageEnum.CB_GETCOUNT, _
0, ByVal 0&)
If lngResult <> ComboBoxResultEnum.CB_ERR Then
strText = "Eintrag " & CStr(lngResult + 1)
lngResult = SendMessageString(Combo1.hWnd, _
ComboBoxMessageEnum.CB_ADDSTRING, _
0, strText)
End If
CB_DELETESTRING
Wert (hex/dez): &H144 = 324
Diese Nachricht wird an eine Combobox gesandt, wenn ein Element aus der Liste der Combobox entfernt werden soll.
wParam enthält den Index des zu entfernenden Elements, lParam wird nicht benötigt und muß auf 0 gesetzt sein. Beachten Sie, daß der Index des ersten Elements in der Liste den Wert 0 hat.
Zurückgegeben wird die neue Anzahl der Elemente in der Liste. Falls wParam größer als die Anzahl der Elemente in der Liste ist, wird CB_ERR zurückgegeben.
Beispiel
Dim lngResult As Long
lngResult = SendMessageLong(Combo1.hWnd, _
ComboBoxMessageEnum.CB_GETCOUNT, _
0, ByVal 0&)
If (lngResult <> ComboBoxResultEnum.CB_ERR) Then
If lngResult <> 0 Then
lngResult = SendMessageLong(Combo1.hWnd, _
ComboBoxMessageEnum.CB_DELETESTRING, _
lngResult - 1, ByVal 0&)
End If
End If
CB_DIR
Wert (hex/dez): &H145 = 325
Wenn eine Combobox den Inhalt eines Verzeichnisses anzeigen soll, so wird diese Nachricht an die Combobox gesandt.
wParam enthält eine Kombination der Flags aus DlgDirList, lParam den Zeiger auf die Suchmaske, die den Filter für den darzustellenden Inhalt darstellt. Die Zeichenkette muß mit einem Nullbyte (vbNullChar) abgeschlossen sein.
Zurückgegeben wird der Index des letzten eingefügten Datei- oder Verzeichnisnamens. Falls ein Fehler auftritt, wird CB_ERR zurückgegeben. Falls nicht ausreichend Speicher zur Verfügung steht, um alle Elemente in die Liste aufzunehmen, wird CB_ERRSPACE zurückgegeben.
Beispiel
Dim lngResult As Long
lngResult = SendMessageString(Combo1.hWnd, _
ComboBoxMessageEnum.CB_DIR, _
DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DRIVES, _
"")
Dim lngResult As Long
lngResult = SendMessageString(Combo1.hWnd, _
ComboBoxMessageEnum.CB_DIR, _
DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DIRECTORY, _
"C:\*.*")
CB_GETCOUNT
Wert (hex/dez): &H146 = 326
Um die Anzahl der Einträge in einer ComboBox zu ermitteln, wird diese Nachricht an die ComboBox gesandt.
wParam und lParam werden nicht benötigt und müssen den Wert 0 haben.
Zurückgegeben wird die Anzahl der enthaltenen Einträge. Falls ein Fehler aufgetreten ist, wird stattdessen CB_ERR zurückgegeben, der Fehler kann dann mit Err.LastDLLError abgefragt werden.
Beispiel
Dim lngResult As Long
lngResult = SendMessageLong(Combo1.hWnd, _
ComboBoxMessageEnum.CB_GETCOUNT, _
0, ByVal &H0)
CB_INSERTSTRING
Wert (hex/dez): &H14A = 330
Diese Nachricht stellt das Element an die in benannte Position. wParam enthält die Position, an der das Element eingetragen werden soll. lParam ist ein Zeiger auf das einzufügende Element, welches mit einem Nullbyte abgeschlossen werden muß.
Im Gegensatz zu CB_ADDSTRING wird bei Listen, bei denen das Style-Flag CBS_SORT gesetzt ist, die Sortierung ignoriert und das Element an die benannte Position gesetzt.
Ist der Aufruf erfolgreich, wird der Index des hinzugefügten Elementes zurückgegeben. Tritt ein Fehler auf, wird CB_ERR zurückgegeben, der Fehler kann dann mit Err.LastDLLError abgefragt werden. Falls die ListBox nicht mehr genügend Speicher hat, wird CB_ERRSPACE zurückgegeben.
Beispiel
Dim lngResult As Long
Dim strText As String
lngResult = SendMessageLong(Combo1.hWnd, _
ComboBoxMessageEnum.CB_GETCOUNT, _
0, ByVal 0&)
If lngResult <> ComboBoxResultEnum.CB_ERR Then
strText = "Eintrag " & CStr(lngResult + 1)
lngResult = SendMessageString(Combo1.hWnd, _
ComboBoxMessageEnum.CB_INSERTSTRING, _
0, strText)
End If
CB_RESETCONTENT
Wert (hex/dez): &H14B = 331
Entfernt alle Elemente aus der Liste der Combobox.
wParam und lParam werden nicht benötigt und müssen den Wert 0 haben.
CB_RESETCONTENT gibt immer den Wert 1 zurück.
Hat die Combobox den Stil CBS_OWNERDRAWN, aber nicht den Stil CBS_HASSTRINGS, empfängt der Eigentümer der Combobox für jedes Element die Nachricht WM_DELETEITEM.
Beispiel
Dim lngResult As Long
lngResult = SendMessageLong(Combo1.hWnd, _
ComboBoxMessageEnum.CB_RESETCONTENT, _
0, ByVal &H0)