ComboBoxMessageEnum: Unterschied zwischen den Versionen

Aus API-Wiki
Wechseln zu: Navigation, Suche
K (vb)
Zeile 1: Zeile 1:
 
== Deklaration ==
 
== Deklaration ==
<vb>'  Bei CB_BASE beginnen alle Combobox-Nachrichten
+
<<syntaxhighlight lang="vb">>'  Bei CB_BASE beginnen alle Combobox-Nachrichten
 
Const CB_BASE As Long = &H140
 
Const CB_BASE As Long = &H140
  
Zeile 40: Zeile 40:
 
     CB_INITSTORAGE = CB_BASE + &H21
 
     CB_INITSTORAGE = CB_BASE + &H21
 
     CB_MSGMAX = CB_BASE + &H22
 
     CB_MSGMAX = CB_BASE + &H22
End Enum</vb>
+
End Enum</<syntaxhighlight lang="vb">>
  
 
Die Nachrichten können mit [[SendMessage]] oder [[PostMessage]] versandt werden.
 
Die Nachrichten können mit [[SendMessage]] oder [[PostMessage]] versandt werden.
Zeile 49: Zeile 49:
  
 
Diese Nachricht wird an eine Combobox gesandt, wenn ein neues Element an das Ende der Liste der Combobox geschrieben werden soll.<BR>
 
Diese Nachricht wird an eine Combobox gesandt, wenn ein neues Element an das Ende der Liste der Combobox geschrieben werden soll.<BR>
wParam muß den Wert 0 enthalten, lParam den Zeiger auf die hinzuzufügende Zeichenkette. Die Zeichenkette muß mit einem Nullbyte ([[vbNullChar]]) abgeschlossen sein.<BR>
+
wParam muß den Wert 0 enthalten, lParam den Zeiger auf die hinzuzufügende Zeichenkette. Die Zeichenkette muß mit einem Nullbyte ([[<syntaxhighlight lang="vb">NullChar]]) abgeschlossen sein.<BR>
 
Zurückgegeben wird der Index des eingefügten Elements. Falls ein Fehler auftritt, wird [[ComboBoxResultEnum|CB_ERR]] zurückgegeben. Falls nicht ausreichend Speicher zur Verfügung steht, um alle Elemente in die Liste aufzunehmen, wird [[ComboBoxResultEnum|CB_ERRSPACE]] zurückgegeben.
 
Zurückgegeben wird der Index des eingefügten Elements. Falls ein Fehler auftritt, wird [[ComboBoxResultEnum|CB_ERR]] zurückgegeben. Falls nicht ausreichend Speicher zur Verfügung steht, um alle Elemente in die Liste aufzunehmen, wird [[ComboBoxResultEnum|CB_ERRSPACE]] zurückgegeben.
  
 
===== Beispiel =====
 
===== Beispiel =====
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
 
Dim strText As String
 
Dim strText As String
  
Zeile 66: Zeile 66:
 
                     ComboBoxMessageEnum.CB_ADDSTRING, _
 
                     ComboBoxMessageEnum.CB_ADDSTRING, _
 
                     0, strText)
 
                     0, strText)
End If</vb>
+
End If</<syntaxhighlight lang="vb">>
  
 
==== CB_DELETESTRING ====
 
==== CB_DELETESTRING ====
Zeile 77: Zeile 77:
  
 
===== Beispiel =====
 
===== Beispiel =====
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
  
 
lngResult = SendMessageLong(Combo1.hWnd, _
 
lngResult = SendMessageLong(Combo1.hWnd, _
Zeile 89: Zeile 89:
 
                 lngResult - 1, ByVal 0&)
 
                 lngResult - 1, ByVal 0&)
 
     End If
 
     End If
End If</vb>
+
End If</<syntaxhighlight lang="vb">>
  
 
==== CB_DIR ====
 
==== CB_DIR ====
Zeile 95: Zeile 95:
  
 
Wenn eine Combobox den Inhalt eines Verzeichnisses anzeigen soll, so wird diese Nachricht an die Combobox gesandt.<BR>
 
Wenn eine Combobox den Inhalt eines Verzeichnisses anzeigen soll, so wird diese Nachricht an die Combobox gesandt.<BR>
wParam enthält eine Kombination der Flags aus [[DlgDirListEnum|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.
+
wParam enthält eine Kombination der Flags aus [[DlgDirListEnum|DlgDirList]], lParam den Zeiger auf die Suchmaske, die den Filter für den darzustellenden Inhalt darstellt. Die Zeichenkette muß mit einem Nullbyte ([[<syntaxhighlight lang="vb">NullChar]]) abgeschlossen sein.
  
 
Zurückgegeben wird der Index des letzten eingefügten Datei- oder Verzeichnisnamens. Falls ein Fehler auftritt, wird [[ComboBoxResultEnum|CB_ERR]] zurückgegeben. Falls nicht ausreichend Speicher zur Verfügung steht, um alle Elemente in die Liste aufzunehmen, wird [[ComboBoxResultEnum|CB_ERRSPACE]] zurückgegeben.
 
Zurückgegeben wird der Index des letzten eingefügten Datei- oder Verzeichnisnamens. Falls ein Fehler auftritt, wird [[ComboBoxResultEnum|CB_ERR]] zurückgegeben. Falls nicht ausreichend Speicher zur Verfügung steht, um alle Elemente in die Liste aufzunehmen, wird [[ComboBoxResultEnum|CB_ERRSPACE]] zurückgegeben.
  
 
===== Beispiel =====
 
===== Beispiel =====
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
  
 
lngResult = SendMessageString(Combo1.hWnd, _
 
lngResult = SendMessageString(Combo1.hWnd, _
 
                 ComboBoxMessageEnum.CB_DIR, _
 
                 ComboBoxMessageEnum.CB_DIR, _
 
                 DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DRIVES, _
 
                 DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DRIVES, _
                 "")</vb>
+
                 "")</<syntaxhighlight lang="vb">>
  
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
  
 
lngResult = SendMessageString(Combo1.hWnd, _
 
lngResult = SendMessageString(Combo1.hWnd, _
 
                 ComboBoxMessageEnum.CB_DIR, _
 
                 ComboBoxMessageEnum.CB_DIR, _
 
                 DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DIRECTORY, _
 
                 DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DIRECTORY, _
                 "C:\*.*")</vb>
+
                 "C:\*.*")</<syntaxhighlight lang="vb">>
  
 
==== CB_GETCOUNT ====
 
==== CB_GETCOUNT ====
Zeile 123: Zeile 123:
  
 
===== Beispiel =====
 
===== Beispiel =====
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
 
lngResult = SendMessageLong(Combo1.hWnd, _
 
lngResult = SendMessageLong(Combo1.hWnd, _
 
                 ComboBoxMessageEnum.CB_GETCOUNT, _
 
                 ComboBoxMessageEnum.CB_GETCOUNT, _
                 0, ByVal &H0)</vb>
+
                 0, ByVal &H0)</<syntaxhighlight lang="vb">>
  
 
==== CB_INSERTSTRING ====
 
==== CB_INSERTSTRING ====
Zeile 139: Zeile 139:
  
 
===== Beispiel =====
 
===== Beispiel =====
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
 
Dim strText As String
 
Dim strText As String
  
Zeile 152: Zeile 152:
 
                     ComboBoxMessageEnum.CB_INSERTSTRING, _
 
                     ComboBoxMessageEnum.CB_INSERTSTRING, _
 
                     0, strText)
 
                     0, strText)
End If</vb>
+
End If</<syntaxhighlight lang="vb">>
  
 
==== CB_RESETCONTENT ====
 
==== CB_RESETCONTENT ====
Zeile 164: Zeile 164:
  
 
===== Beispiel =====
 
===== Beispiel =====
<vb>Dim lngResult As Long
+
<<syntaxhighlight lang="vb">>Dim lngResult As Long
  
 
lngResult = SendMessageLong(Combo1.hWnd, _
 
lngResult = SendMessageLong(Combo1.hWnd, _
 
                 ComboBoxMessageEnum.CB_RESETCONTENT, _
 
                 ComboBoxMessageEnum.CB_RESETCONTENT, _
                 0, ByVal &H0)</vb>
+
                 0, ByVal &H0)</<syntaxhighlight lang="vb">>
  
 
== Beispiele ==
 
== Beispiele ==
* [http://www.activevb.de/tipps/vb6tipps/tipp0263.html Tipp 0263: DriveListBox-, DirListBox-Eintrag löschen]
+
* [http://www.active<syntaxhighlight lang="vb">.de/tipps/<syntaxhighlight lang="vb">6tipps/tipp0263.html Tipp 0263: DriveListBox-, DirListBox-Eintrag löschen]
  
 
== Weblinks ==
 
== Weblinks ==

Version vom 5. November 2016, 23:09 Uhr

Deklaration

<<syntaxhighlight lang="vb">>' 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</<syntaxhighlight lang="vb">>

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 ([[<syntaxhighlight lang="vb">NullChar]]) 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

<<syntaxhighlight lang="vb">>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</<syntaxhighlight lang="vb">>

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

<<syntaxhighlight lang="vb">>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</<syntaxhighlight lang="vb">>

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 ([[<syntaxhighlight lang="vb">NullChar]]) 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

<<syntaxhighlight lang="vb">>Dim lngResult As Long

lngResult = SendMessageString(Combo1.hWnd, _

               ComboBoxMessageEnum.CB_DIR, _
               DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DRIVES, _
               "")</<syntaxhighlight lang="vb">>

<<syntaxhighlight lang="vb">>Dim lngResult As Long

lngResult = SendMessageString(Combo1.hWnd, _

               ComboBoxMessageEnum.CB_DIR, _
               DlgDirListEnum.DDL_EXCLUSIVE Or DlgDirListEnum.DDL_DIRECTORY, _
               "C:\*.*")</<syntaxhighlight lang="vb">>

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

<<syntaxhighlight lang="vb">>Dim lngResult As Long lngResult = SendMessageLong(Combo1.hWnd, _

               ComboBoxMessageEnum.CB_GETCOUNT, _
               0, ByVal &H0)</<syntaxhighlight lang="vb">>

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

<<syntaxhighlight lang="vb">>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</<syntaxhighlight lang="vb">>

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

<<syntaxhighlight lang="vb">>Dim lngResult As Long

lngResult = SendMessageLong(Combo1.hWnd, _

               ComboBoxMessageEnum.CB_RESETCONTENT, _
               0, ByVal &H0)</<syntaxhighlight lang="vb">>

Beispiele

Weblinks

CB_ADDSTRING