Faster items adding in ComboBox (with item data)

The following code snippet adds 5000 items (both strings and items data) into a ComboBox.
It does it in 2 ways: with the standard AddItem method and ItemData property that Visual Basic provides, and by using Win32 API.
As you'll see, adding ComboBox items with Win32 API is much faster than doing it with standard VB way...

'Example for adding items into combo by using Win32 API.
'
'Written by Nir Sofer
'Web site: http://nirsoft.mirrorz.com

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
Private Const CB_ADDSTRING = &H143
Private Const CB_SETITEMDATA = &H151

Private Sub cmdComboAPI_Click()
    Dim strItemText     As String
    Dim lngIndex        As Long
    Dim dblTimer        As Double
    Dim lngAddIndex     As Long
    
    cmbTest.Clear
    dblTimer = Timer
    'Adding items strings and items data with Win32 API
    For lngIndex = 1 To 5000
        strItemText = "item number " & CStr(lngIndex)
        'Add the new string to the ComboBox.
        lngAddIndex = SendMessage(cmbTest.hWnd, CB_ADDSTRING, 0, ByVal strItemText)
        'Set the item data of the new item.
        SendMessage cmbTest.hWnd, CB_SETITEMDATA, lngAddIndex, ByVal lngIndex
    Next
    MsgBox Format(Timer - dblTimer, "0.000") & " seconds"

End Sub

Private Sub cmdComboVB_Click()
    Dim strItemText     As String
    Dim lngIndex        As Long
    Dim dblTimer        As Double
    
    cmbTest.Clear
    dblTimer = Timer
    'Adding items strings and items data with standard AddItem method.
    For lngIndex = 1 To 5000
        strItemText = "item number " & CStr(lngIndex)
        cmbTest.AddItem strItemText
        cmbTest.ItemData(cmbTest.NewIndex) = lngIndex
    Next
    MsgBox Format(Timer - dblTimer, "0.000") & " seconds"

End Sub

Download this sample project