Author | Message | Time |
---|---|---|
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 |