Valhalla Legends Forums Archive | General Programming | (VB-Intermediate) - Combo Box stuff

AuthorMessageTime
Grok
These functions work on a combo box.

Here are some other functions I wrote for work, to help me automate another process from VB.  Actually, I ended up wrapping these functions into a class, making their usage even too easy.

[code]Option Explicit

Private ghWnd As Long
Private gdlgID As Long

Public Property Get hWnd() As Long
   hWnd = ghWnd
End Property

Public Property Let hWnd(ByVal hWnd As Long)
   ghWnd = hWnd
End Property

Public Property Get dlgID() As Long
   dlgID = gdlgID
End Property

Public Property Let dlgID(ByVal dlgID As Long)
   gdlgID = dlgID
End Property

Public Function AddString(ByVal NewString As String, Optional ByVal dlgID As Long, Optional ByVal hWnd As Long) As Long
   Dim ret As Long
   AddString = CB_ERR
   If hWnd = 0 Then hWnd = ghWnd
   If hWnd = 0 Then
       If IsMissing(dlgID) = True Then Exit Function       'no way to get hWnd if no dlgID
       hWnd = GetDlgItem(ghWnd, dlgID)
   End If
   If hWnd = 0 Then Exit Function                          'still 0, unable to continue
   AddString = SendMessageSTR(hWnd, CB_ADDSTRING, 0, NewString)
End Function

Public Function FindString(ByRef SearchString As String, Optional ByVal dlgID As Long, Optional ByVal hWnd As Long) As Long
   Dim ret As Long
   FindString = CB_ERR
   If hWnd = 0 Then hWnd = ghWnd
   If hWnd = 0 Then
       If IsMissing(dlgID) = True Then Exit Function       'no way to get hWnd if no dlgID
       hWnd = GetDlgItem(ghWnd, dlgID)
   End If
   If hWnd = 0 Then Exit Function                          'still 0, unable to continue
   FindString = SendMessageSTR(hWnd, CB_FINDSTRING, -1, SearchString)
End Function

Public Function SelectString(ByVal SearchString As String, Optional ByVal dlgID As Long, Optional ByVal hWnd As Long) As Long
   Dim ret As Long
   SelectString = CB_ERR
   If hWnd = 0 Then hWnd = ghWnd
   If hWnd = 0 Then
       If IsMissing(dlgID) = True Then Exit Function       'no way to get hWnd if no dlgID
       hWnd = GetDlgItem(ghWnd, dlgID)
   End If
   If hWnd = 0 Then Exit Function                          'still 0, unable to continue
   SelectString = SendMessageSTR(hWnd, CB_SELECTSTRING, -1, SearchString)
End Function[/code]

Usage is, for example:
[code]
   Dim objCCombo As New CCombo
   Dim hWnd As Long, hCbo As Long, lngCtrlId As Long
   Dim strReturn As String
   
   hWnd = FindWindow(vbNullString, "Some Window Caption")
   lngCtrlId = &H23F    'get value using Spy++
   hCbo = GetDlgItem(hWnd, lngCtrlId)
   objCCombo.hWnd = hWnd
   lret = objCCombo.SelectString(strReturn)
[/code]

That should cause the given string to be selected, if it exists in the combobox values list.
March 10, 2003, 12:22 PM

Search