用API把combox的列表自动打开.那关闭列表?的API常数是?CSDN的查找不能用!

lang_csdn 2004-10-14 04:02:28
UP

...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
还想懒够 2004-10-15
  • 打赏
  • 举报
回复
写错了,SendKeys
还想懒够 2004-10-15
  • 打赏
  • 举报
回复
SendKes "{F4}"
lxcc 2004-10-14
  • 打赏
  • 举报
回复
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const CB_GETDROPPEDWIDTH = &H15F
Private Const CB_SETDROPPEDWIDTH = &H160
Private Const CB_ERR = -1
Private Const WM_SETREDRAW As Long = &HB&
Private Const CB_FINDSTRING As Long = &H14C&

Public Sub AutoComplete(InControl As Object)
On Error GoTo trap

Dim StrPos As Long
Dim lPos As Long
Dim SearchStr As String

If TypeOf InControl Is ComboBox Then
StrPos = InControl.SelStart
SearchStr = Left$(InControl.Text, StrPos)

lPos = SendMessage(InControl.hwnd, CB_FINDSTRING, 0, ByVal SearchStr)

If lPos >= 0 Then
InControl.Text = InControl.List(lPos)
InControl.ListIndex = lPos
End If

With InControl
.SelStart = StrPos
.SelLength = Len(InControl.Text)
End With
End If
Exit Sub
trap:
MsgBox Err.Description
End Sub

调用方法:
AutoComplete ComboBox1
northwolves 2004-10-14
  • 打赏
  • 举报
回复
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 Sub Command1_Click() '关闭
SendMessage Combo1.hwnd, &H14F, False, 0
End Sub

Private Sub Form_Load() '展开
For i = 1 To 10
Combo1.AddItem i
Next
SendMessage Combo1.hwnd, &H14F, True, 0
End Sub

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧