VB 的 ListBox 并没有水平滚动条的功能,如果遇到某一个资料项很长时, 使用者就无法看到这一个资料项的所有内容,要如何设定水平滚动条给 ListBox?
可利用 SendMessage 传送 LB_SETHORIZONTALEXTENT 消息给 ListBox,此一讯息的作用就是要求ListBox 设定水平滚动条, 细节如下:
1. API 的声明:
'16位 Const WM_USER = &H400 Const LB_SETHORIZONTALEXTENT = (WM_USER + 21) Private Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long '32位 Const LB_SETHORIZONTALEXTENT = &H194 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
2. 程序范例:
' List1 为 ListBox 的名称 Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, 水平卷动轴的宽度, ByVal 0&)
特别注意: 以上的水平滚动条宽度的单位是 pixel(像素),或许您会认为这个宽度就是 ListBox 的宽度,但是结果却不是这样的,它真正指的是这个滚动条要滚动的文字的宽度,所以您要预留可能放到 ListBox 内的资料最长的长度,若留得太短,可能出现以下二种情形:
1、 水平滚动条的宽度设的比 ListBox 本身的宽度还短,VB会认为不需要卷动轴,而不产生滚动条! 2、 水平滚动条的宽度设的比 ListBox 内的资料宽度还短,则只能滚动一半,还是看不到完整内容!
至少要成为本站的注册会员才能下载! 注册点我!
|