Für dieses Beispiel benötigen Sie eine Form, eine Listbox und zwei Commandbuttons.
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Const WM_USER = &H400
Const LB_ADDSTRING = &H180
Const WM_SETREDRAW = &HB
Private myArr(1000) As Variant
Private Sub Command1_Click()
' normales Füllen
Dim i As Integer
Dim temp As String
Dim rVal As Long
List1.Clear
x = Timer
For i = 1 To 1000
temp = Int(Rnd * UBound(myArr))
List1.AddItem temp
DoEvents
Next
y = Timer
MsgBox "Dauer: " & y - x
End Sub
Private Sub Command2_Click()
' mit Sendmessage füllen
Dim i As Integer
Dim temp As String
Dim rVal As Long
List1.Clear
x = Timer ' nur zur Zeitmessung (Benchmark)
' Neuzeichnen verhindern
rVal = SendMessage(List1.hwnd, WM_SETREDRAW, 0, 0)
For i = 1 To 1000
temp = Int(Rnd * UBound(myArr))
rVal = SendMessage(List1.hwnd, LB_ADDSTRING, 0, ByVal temp)
DoEvents
Next
' Neuzeichnen
rVal = SendMessage(List1.hwnd, WM_SETREDRAW, 1, 0)
y = Timer
MsgBox "Dauer: " & y - x
End Sub
Private Sub Form_Load()
Command1.Caption = "AddItem normal"
Command2.Caption = "AddItem mit Sendmessage"
End Sub