正在阅读:在VB的ListView中动态加载记录在VB的ListView中动态加载记录

2004-03-25 14:32 出处:CSDN 作者:yangang000 责任编辑:linjixiong
  在访问数据库时,经常会遇到记录数量过多,对数据列表进行初始化时耗费大量时间,使用户在进入界面时等待时间过长。为了解决这个问题,我们可以通过使用动态加载数据的方法来实现。

  即当进行初始化时,只是加载少量的数据,使控件快速完成初始化,让用户在较短的时间内得到控制权,这时加载数据的多少可以根据实际情况进行设定;然后,当用户滚动视图的时候,我们检测其滚动的位置,判断是否需要继续加载数据,如果尚未显示的数据数量少于约定值,则继续加载一定量的数据,否则不作任何动作。这样一来,既可以实现所有数据的加载,又不影响用户的操作。

  其实这种方法在VC中很容易实现,我们只要相应相应列表的WM_VSCROLL就可以了,但是在VB中,列表控件不直接支持这个消息,这就需要我们做一些额外的工作,以实现这一过程。我们似乎可以使用计时器控件定期对列表状态进行监视,从而实现改过程,但是这种方法不但影响系统运行速度,而且效果也不是很好,所以在这里我们仍然使用响应WM_VSCROLL消息的方法。

  为了实现这一功能,首先是在VB中处理列表控件的消息。由于VB中无法直接处理我们所需要的消息,在这里我们就要用到一个API函数将列表控件的消息处理过程设置为我们自己定义的函数。这个API就是SetWindowLong,它的原型是

  Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

  它有三个参数:

  hwnd 是要设置的窗体句柄

  nIndex 是要设置项目的索引,在这段程序里我们将其取值为GWL_WNDPROC

  dwNewLong 是要设置项目的值,在这段程序里就是我们自定义的消息处理函数的地址

  它的返回值是一个长整数,是调用这个API之前对应项目的值,如果设置失败,则返回0,对于具体的错误信息可以调用GetLastError来获得,在这里它将返回原始的列表控件的消息处理函数的地址。

  具体的做法如下所示:

  1. 在现有的模块或新建立的模块中定义消息处理函数
 
  消息处理函数应定义为下面的形式:
 


察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品