由于需要维护很多的VB代码,而这些代码中,对基础资料的处理清一色的都是采用Combox控件来实现基础资料的列表显示,把基础资料的fnumber和fname放到combox一个项里面,通过在其中加50个空格来区分。效果图如下:
于是我想写一个类似于百度搜索时候的自动提示的弹出框,效果如下:
又不想专门写个自定义的控件,于是我结合就用了子类化和VB自带的事件机制对TextBox进行了扩展。关键代码如下,下面的是对窗体进行子类化,当窗体上的文本控件自动获得焦点的时,把控件引用保存到我的自定义类中,在自定义类中捕获textbox的change事件。这个是个半成品,只是提供了一个思路。
Public Function SubWndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_ACTIVATE
If (wParam And &HFFFF) = WA_INACTIVE Then
DebugPrint "WM_ACTIVATE,失去激活"
End If
If (wParam And &HFFFF) = WA_CLICKACTIVE Then
DebugPrint "WM_ACTIVATE,鼠标激活"
Debug.Print CStr(lParam)
If lParam = Form1.hwnd Then
DebugPrint "激活的窗体句柄是FORM1.HWND"
End If
If lParam = Form1.Text1.hwnd Then
DebugPrint "激活的窗体句柄是FORM1.HWND"
End If
End If
If (wParam And &HFFFF) = WA_ACTIVE The