Option Explicit Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Const LB_SETHORIZONTALEXTENT = &H194Private Const WS_HSCROLL = &H100000Private Const GWL_STYLE = (-16) Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Form_Load() Dim lStyle As Long List1.AddItem "Specifies the zero-based offset to the value to be retrieved. Valid values are in the range zero through the number of bytes of extra window memory, minus four" SendMessage List1.hWnd, LB_SETHORIZONTALEXTENT, 2000, 0 lStyle = GetWindowLong(List1.hWnd, GWL_STYLE) SetWindowLong List1.hWnd, GWL_STYLE, lStyle Or WS_HSCROLL End Sub
可以用API函数: 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
发送消息要用到API函数;
其中的窗口句柄是你的ListBox.hWnd,这个属性是隐藏的,但可以使用.
关于这个消息的用法请参阅MSDN.
http://vbnet.mvps.org/code/listapi/sethorizontalextent.htm这里有,你看看
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Const LB_SETHORIZONTALEXTENT = &H194Private Const WS_HSCROLL = &H100000Private Const GWL_STYLE = (-16)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Form_Load()
Dim lStyle As Long
List1.AddItem "Specifies the zero-based offset to the value to be retrieved. Valid values are in the range zero through the number of bytes of extra window memory, minus four"
SendMessage List1.hWnd, LB_SETHORIZONTALEXTENT, 2000, 0
lStyle = GetWindowLong(List1.hWnd, GWL_STYLE)
SetWindowLong List1.hWnd, GWL_STYLE, lStyle Or WS_HSCROLL
End Sub
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
你得的確可以實現,可是,那個scrollbar的長度是固定的。是否可以不固定