Public Function XXXListProc(ByVal hWnd As Long, ByVal iMsg As Long, _ ByVal wParam As Long, lParam As Long) As Long If (iMsg = WM_VSCROLL) Then If SB_ENDSCROLL = Val("&H" & Right(Hex(wParam), 4)) Then If frmXXX.XXXListView.GetFirstVisible.Index + 100 > frmXXX. XXXListView.ListItems.count Then LoadDataFunc frmXXX. XXXListView.ListItems.count, 100 End If End If End If XXXListProc = CallWindowProc(g_OldProc, hWnd, iMsg, wParam, lParam) End Function 这个函数中使用了LoadDataFunc对数据进行加载,它是一个自定义的函数,第一个参数是数据加载的起始位置(第n条记录),第二个参数是要加载数据(记录)的数量。这个函数可以根据自己的实际情况定义,这里只是我使用的形式。另外,需要注意的是这个消息处理函数必须定义在模块中,而不能定义在窗体中。 2. 当窗体初始化时将列表控件的消息处理函数设置为自定义的消息处理函数 在列表控件所在的窗体的初始化函数中加入下面代码: g_OldProc=SetWindowLong(XXXListView.hWnd,GWL_WNDPROC,AddressOf XXXListProc) 其中,XXXListView.hWnd是列表控件的窗口句柄,这个属性是一个隐藏属性,虽然看不到,但是可以正常使用;我们使用AddressOf取得了我们自定义消息处理函数的地址。g_OldProc是一个全局变量,用来保存原始的消息处理函数地址。 3. 当窗体退出时将列表控件的消息处理函数设置为原来的函数 在列表控件所在窗体的Unload事件中加入以下代码: SetWindowLong XXXListView.hWnd, GWL_WNDPROC, g_ OldProc 在这种处理方法中,最关键的就是实现对窗口消息的自定义处理,所以我们使用了VB中不提倡使用的指针,虽然不提倡在VB中使用指针,但合理地使用指针将对功能的实现具有很大的帮助。这里只介绍了利用自定义消息处理函数动态加载数据的一种方法,其实也可以将这种方法应用到其它方面,从而加强程序的功能,提高程序的效率。 |
正在阅读:在VB的ListView中动态加载记录在VB的ListView中动态加载记录
2004-03-25 14:32
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键