求用SHAutoComplete实现自动匹配的实例

sxj0384 2009-12-27 06:28:02
我的程序有个combobox是用来输网址的,我想让它有像IE一样当输入网址时弹出下拉列表自动匹配输入的内容.
在网上看了可以用SHAutoComplete来实现,可是都没有实例,我是菜鸟,一点也不懂,请高手不吝惜给个实例.
请高手指教!
谢谢了!
...全文
307 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxj0384 2009-12-31
  • 打赏
  • 举报
回复
谢谢了~~
sxj1234 2009-12-31
  • 打赏
  • 举报
回复
多谢各位的热心指教,小菜感激不尽~~
vansoft 2009-12-29
  • 打赏
  • 举报
回复
补充说一句,不是这几代码就可以搞定的.
Tiger_Zhao 2009-12-29
  • 打赏
  • 举报
回复
ComboBox 也可以的,不过编辑框是子窗口。
SHAutoComplete GetWindow(Combo1.hWnd, GW_CHILD), SHACF_DEFAULT
lingll 2009-12-29
  • 打赏
  • 举报
回复
建一class
'---------------------------------------------------------------------------------------
' Module : cAutoComplete
' DateTime : 2004-3-5 1:14
' Author : Lingll
' Email : lingll_xl@163.com
' Purpose :
'---------------------------------------------------------------------------------------

Option Explicit

Private Declare Function SHAutoComplete Lib "Shlwapi.dll" (ByVal hwndEdit As Long, ByVal dwFlags As Long) As Long
Private Declare Function DllGetVersion Lib "Shlwapi.dll" (ByRef dvi As DLLVERSIONINFO) As Long

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long



Private Type DLLVERSIONINFO
cbSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildVersion As Long
dwPlatformID As Long
End Type

Private Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Private Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Private Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Private Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Private Const SHACF_DEFAULT = &H0
Private Const SHACF_FILESYSTEM = &H1
Private Const SHACF_URLHISTORY = &H2
Private Const SHACF_URLMRU = &H4
Private Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
Private Const SHACF_USETAB As Long = &H8


Private Const DLLVER_PLATFORM_WINDOWS = &H1
Private Const DLLVER_PLATFORM_NT = &H2
Private Const S_OK = &H0
Private Const NOERROR = 0

Public Enum SHACF_FLAGS
eSHACF_AUTOSUGGEST_FORCE_ON = SHACF_AUTOSUGGEST_FORCE_ON
eSHACF_AUTOSUGGEST_FORCE_OFF = SHACF_AUTOSUGGEST_FORCE_OFF
eSHACF_AUTOAPPEND_FORCE_ON = SHACF_AUTOAPPEND_FORCE_ON
eSHACF_AUTOAPPEND_FORCE_OFF = SHACF_AUTOAPPEND_FORCE_OFF
eSHACF_DEFAULT = SHACF_DEFAULT
eSHACF_FILESYSTE = SHACF_FILESYSTEM
eSHACF_URLHISTORY = SHACF_URLHISTORY
eSHACF_URLMRU = SHACF_URLMRU
eSHACF_URLALL = SHACF_URLALL
eSHACF_USETAB = SHACF_USETAB
End Enum
'local variable(s) to hold property value(s)
Private mvarErrDescription As String 'local copy



Public Property Get ErrDescription() As String
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.ErrDescription
ErrDescription = mvarErrDescription
End Property


Public Function Assign(hwndEdit As Long, Optional nFlags As SHACF_FLAGS = eSHACF_DEFAULT) As Boolean
Dim dvi As DLLVERSIONINFO

dvi.cbSize = Len(dvi)
If DllGetVersion(dvi) <> NOERROR Then
mvarErrDescription = "无法检测Shlwapi.dll的版本号"
Assign = False
Exit Function
End If
'Debug.Print "dll version:", dvi.dwMajorVersion
If dvi.dwMajorVersion >= 5 Then
If SHAutoComplete(hEdit(hwndEdit), nFlags) <> S_OK Then
mvarErrDescription = "无法开启自动完成功能"
Assign = False
Exit Function
End If
Else
mvarErrDescription = "IE版本低于5"
Assign = False
Exit Function
End If

Assign = True
End Function


Private Function hEdit(nHwnd)
hEdit = FindWindowEx(nHwnd, 0, "EDIT", vbNullString)
End Function


用法:


Set mIeAuto = New cAutoComplete
mIeAuto.Assign Combo1.hWnd, eSHACF_FILESYSTE Or eSHACF_URLALL Or eSHACF_USETAB Or eSHACF_AUTOSUGGEST_FORCE_ON
Tiger_Zhao 2009-12-28
  • 打赏
  • 举报
回复
'Code by Lúcio Chaves (luciochaves@bol.com.br)
'This program needs a textbox ('Text1') on a form
Private Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Private Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Private Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Private Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Private Const SHACF_DEFAULT = &H0
Private Const SHACF_FILESYSTEM = &H1
Private Const SHACF_URLHISTORY = &H2
Private Const SHACF_URLMRU = &H4
Private Const SHACF_USETAB = &H8
Private Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
Private Declare Sub SHAutoComplete Lib "shlwapi.dll" (ByVal hwndEdit As Long, ByVal dwFlags As Long)
Private Sub Form_Load()
SHAutoComplete Text1.hWnd, SHACF_DEFAULT
End Sub
sxj0384 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxyj6450 的回复:]
SHAutoComplete绑定控件是很简单的,但是它默认只可以匹配IE记录,最近文件记录等系统关键字,而不支持自定义的关键字,如果需要用自定义的关键字列表那就会很麻烦了.
其实大可以自己做一个自动完成的组合框出来,网上N多源码
[/Quote]
暂时只想学会使用SHAutoComplete
自动完成的组合框以后再学
知道的请指教,谢谢了!
SYSSZ 2009-12-28
  • 打赏
  • 举报
回复
我试了试,Combo1没反应,SHAutoComplete Text1.hWnd, SHACF_DEFAULT
和SHAutoComplete RichTextBox1.hWnd, SHACF_DEFAULT都可以,非文本编辑控件不可?Combo也有编辑框,但就是不行。
vansoft 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxyj6450 的回复:]
SHAutoComplete绑定控件是很简单的,但是它默认只可以匹配IE记录,最近文件记录等系统关键字,而不支持自定义的关键字,如果需要用自定义的关键字列表那就会很麻烦了.
其实大可以自己做一个自动完成的组合框出来,网上N多源码
[/Quote]

自定义关键字是支持的,
只是对中文支持得不太好.
三断笛 2009-12-27
  • 打赏
  • 举报
回复
SHAutoComplete绑定控件是很简单的,但是它默认只可以匹配IE记录,最近文件记录等系统关键字,而不支持自定义的关键字,如果需要用自定义的关键字列表那就会很麻烦了.
其实大可以自己做一个自动完成的组合框出来,网上N多源码
贝隆 2009-12-27
  • 打赏
  • 举报
回复
飘过
yaozi8 2009-12-27
  • 打赏
  • 举报
回复
期待吧,我也想知道。
内容概要:本文基于Matlab/Simulink平台,对电励磁同步电机在异步牵入、稳态运行及能耗制动三个阶段的全周期动态特性进行建模仿真与系统研究。研究构建了完整的电机数学模型与仿真系统,重点分析了电机从异步启动到同步运行的过渡过程、稳态运行时的电磁与机械性能,以及执行能耗制动时的减速特性与能量耗散机理。通过仿真,揭示了励磁电流、负载转矩与转速在不同工况下的动态响应规律与耦合关系,为电机的控制策略设计与性能优化提供了理论依据和数据支持。; 适合人群:具备电机学、电力电子与电力拖动基础知识的电气工程及相关专业的研究生、科研人员与工程技术人员。; 使用场景及目标:①研究电励磁同步电机的启动特性,解决异步牵入过程不稳定或失败的问题;②分析电机在不同负载下的稳态运行性能,优化运行效率;③设计和验证能耗制动策略,精确控制制动过程的减速时间和能量消耗。; 阅读建议:在学习过程中,应结合电机的基本原理,深入理解仿真模型中各模块(如电机本体、励磁控制、负载模型)的搭建逻辑,并通过调整仿真参数(如励磁电压、负载大小)来观察和分析系统动态响应,以加深对电机全周期运行特性的理解。

1,488

社区成员

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

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