Article: Q192184
Product(s): Microsoft Visual Basic for Windows
Version(s): WINDOWS:4.0,5.0,6.0
Operating System(s):
Keyword(s): kbGrpDSVB
Last Modified: 11-JAN-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual Basic Learning Edition for Windows, versions 5.0, 6.0
- Microsoft Visual Basic Professional Edition for Windows, versions 5.0, 6.0
- Microsoft Visual Basic Enterprise Edition for Windows, versions 5.0, 6.0
-------------------------------------------------------------------------------
SUMMARY
=======
The normal ListBox that comes with Visual Basic for Windows does not have a
horizontal scroll bar. This can be a problem when the item in a ListBox extends
past the boundaries of the ListBox. To add a horizontal scroll bar to the
control, you can call the Windows API SendMessage function with the
LB_SETHORIZONTALEXTENT constant.
MORE INFORMATION
================
This message sets the width in pixels by which a ListBox can scroll
horizontally. If the width of the ListBox is smaller than this value, a
horizontal scroll bar will be added to allow horizontally scrolling items in the
ListBox.
Step-by-Step Example
--------------------
1. Create a new Standard EXE project in Visual Basic. Form1 is created by
default.
2. Add a CommandButton and a ListBox to Form1.
3. Paste the following code into the general declaration section of Form1:
Option Explicit
Private Declare Function SendMessageByNum Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const LB_SETHORIZONTALEXTENT = &H194
Private Sub Command1_Click()
Dim s As String
Static x As Long
s = InputBox("Please enter any text", "List scroll", _
"this is a simple scrollbar sample for demonstration purposes")
List1.AddItem s
If x < TextWidth(s & " ") Then
x = TextWidth(s & " ")
If ScaleMode = vbTwips Then _
x = x / Screen.TwipsPerPixelX ' if twips change to pixels
SendMessageByNum List1.hwnd, LB_SETHORIZONTALEXTENT, x, 0
End If
End Sub
4. Run the project and click on Command1. You will be prompted to enter a text
string to be added to the ListBox. Each time you enter a string, the code
checks to see if it is longer than the previous longest string and will
adjust the scroll bar as necessary.
REFERENCES
==========
For information on performing this task in 16-bit versions of Visual Basic,
please see the following article in the Microsoft Knowledge Base:
Q80190 : HOWTO: Add a Horizontal Scroll Bar to Visual Basic ListBox
Additional query words: kbDSupport kbDSD kbVBp kbVBp400 kbVBp500 kbVBp600 kbCtrl kbAPI
======================================================================
Keywords : kbGrpDSVB
Technology : kbVBSearch kbAudDeveloper kbZNotKeyword6 kbZNotKeyword2 kbVB500Search kbVB600Search kbVBA500 kbVBA600 kbVB500 kbVB600
Version : WINDOWS:4.0,5.0,6.0
Issue type : kbhowto
=============================================================================