Rieccomi con un nuovo problema. Come dice il titolo con la ScrollBar orizzontale per la DirListBox.
Sono riuscito ad ottenerla con questo codice:
e devo dire che funziona. Il problema è che il pulsante che fa scorrere le voci nel controllo, una volta rilasciato il pulsante del mouse, ritorna subito all'inizio invece di rimanere per esempio a metà corsa come succede con la ScrollBar verticale.codice:Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Const GWL_STYLE = (-16) Private Const LB_SetHorizontalExtent = &H194 Private Const SWP_FrameChanged = &H20 Private Const SWP_NoMove = &H2 Private Const SWP_NoOwnerZOrder = &H200 Private Const SWP_NoSize = &H1 Private Const WS_HSCROLL = &H100000 Public Sub AddHScrollToDirListBox(Box As DirListBox, Optional Width = 1000) Dim WS&, i& SendMessage Box.hwnd, LB_SetHorizontalExtent, Width, 0 WS = GetWindowLong(Box.hwnd, GWL_STYLE) SetWindowLong Box.hwnd, GWL_STYLE, WS Or WS_HSCROLL SetWindowPos Box.hwnd, 0, 0, 0, 0, 0, SWP_NoMove Or SWP_NoOwnerZOrder Or SWP_NoSize Or SWP_FrameChanged End Sub Private Sub Form_Activate() Call AddHScrollToDirListBox(Dir1) End Sub
Come posso risolvere?
Grazie!

Rispondi quotando