问题内容:
==========================================================================
大家经常都会用到这样一个问题。当用户往一个TextBox(MultiLine = False)输入数据或文字时,自动在其下下方(或上方)弹出一个下拉框,下拉框中列出用户以前在此输入的一些数字(或文字串)。
如:我们经常去Google搜索,当我们准备在搜索框里面键入我们要搜索的东西的时候,其下方都会弹出一个下拉框,里面列出我们以前在此搜索过的东西。这种下拉框和普通的ComboBox是不同的:
1.它没有下拉按钮
2.它的下拉列表的右下角会有一个小三角形,用鼠标拖动它可以更改下拉框的大小注:如果各位喜欢分的话,我可以多开几个帖子,分我有得是。
谢谢!哦,忘记说问题了,问题就是这个控件在哪个ocx里面,谢谢!
==========================================================================答案(虫子):
'==============================================================================
Option ExplicitPublic Enum SHAutoCompleteFlags
   ' // Currently (SHACF_FILESYSTEM | SHACF_URLALL)
   SHACF_DEFAULT = &H0
   ' // This includes the File System as well as the rest of the shell 
   ' (Desktop\My Computer\Control Panel\)
   SHACF_FILESYSTEM = &H1
   ' // URLs in the User's History
   SHACF_URLHISTORY = &H2
   ' // URLs in the User's Recently Used list.
   SHACF_URLMRU = &H4
   ' // Use the tab to move thru the autocomplete possibilities 
   ' instead of to the next dialog/window control.
   SHACF_USETAB = &H8
   SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
   ' // This includes the File System 
   SHACF_FILESYS_ONLY = &H10                     '#if (_WIN32_IE >= = &H0600)
   ' // Same as SHACF_FILESYS_ONLY except it only includes directories, 
   ' UNC servers, and UNC server shares. 
   SHACF_FILESYS_DIRS = &H20                     
'#End If ' // (_WIN32_IE >= = &H0600)
   
   ' // Ignore the registry default and force the feature on.
   SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
   ' // Ignore the registry default and force the feature off.
   SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
   ' // Ignore the registry default and force the feature on. 
   ' (Also know as AutoComplete)
   SHACF_AUTOAPPEND_FORCE_ON = &H40000000
    ' // Ignore the registry default and force the feature off. 
    ' (Also know as AutoComplete)
   SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
End EnumPrivate Declare Function SHAutoComplete Lib "shlwapi.dll" ( _
   ByVal hwndEdit As Long, ByVal dwFlags As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
   (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, _
   ByVal lpszWindow As String) As LongPrivate Const S_OK = 0Public Function AutoComplete( _
      ByVal hWnd As Long, _
      ByVal eFlags As SHAutoCompleteFlags _
   )
Dim lR As Long
   lR = SHAutoComplete(hWnd, eFlags)
   AutoComplete = (lR <> S_OK)
End Function
Public Function GetComboBoxEdithWnd(ByVal hWnd As Long) As Long
   GetComboBoxEdithWnd = FindWindowEx(hWnd, 0, "EDIT", vbNullString)
End Function'To test the function, add a TextBox and a ComboBox to the Project's form. Name the TextBox "txtTest" and the ComboBox "cboTest". Then add this code to the project's form:Private Sub Form_Load()
   AutoComplete txtTest.hWnd, SHACF_FILESYS_ONLY
   AutoComplete GetComboBoxEdithWnd(cboTest.hWnd), SHACF_FILESYS_ONLY
End Sub'在文本框内输入c:\ 然后就可以看到效果!
'==============================================================================