Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo hacer que el control dirlistbox admita la rueda del mouse en VB?

¿Cómo hacer que el control dirlistbox admita la rueda del mouse en VB?

'Función: control de rueda del mouse vb para selección de control DirListBox

'En el módulo estándar:

Opción?Explícito

Público?Declarar?Función?CallWindowProc ?Lib ?"usuario32"? ¿"CallWindowProcA"?(ByVal?lpPrevWndFunc?As?Long, ByVal?hwnd?As?Long, ByVal?Msg?As?Long, ByVal?wParam?As?Long, ByVal?lParam?As?Long)?As?Long

¿Público?Declarar?Función?GetWindowLong?Lib?"user32"?"GetWindowLongA"?(ByVal?hwnd?As?Long,?ByVal?nIndex?As?Long)?As?Long

¿Público?Declarar?Función?SetWindowLong?Lib?"user32"?"SetWindowLongA" ?(ByVal?hwnd?As?Long, ?ByVal?nIndex?As?Long, ?ByVal?dwNewLong?As?Long)?As ?Largo

¿Público?Const?GWL_WNDPROC?=?-4amp;

¿Público?Const?WM_MOUSEWHEEL?=? amp; H20A

¿Público?¿Declarar?Función?GetCursorPos?Lib?"user32"?(lpPoint?As?POINTAPI)?As?Long

¿Público?¿Declarar?Función?WindowFromPoint? Lib?"Usuario32(ByVal?xPoint?As?Long,?ByVal?yPoint?As?Long)?As?Long

¿Público?Tipo?POINTAPI

x?As? Long

y?As?Long

Fin?Tipo

Público?

Público?OldWindowProc?As?Long?' la dirección del controlador de mensajes de la ventana predeterminada del sistema

Public?hwndDirListBox?As?Long?Se utiliza para guardar el identificador del control Dir1

'Función de controlador de mensajes personalizado

¿Público?Función?NewWindowProc(ByVal?hwnd?As?Long, ByVal?Msg?As?Long, ByVal?wParam?As?Long, ByVal?lParam?As?Long)?As?Long

¿Error?Reanudar?Siguiente

Si Msg?=?WM_MOUSEWHEEL?Entonces

'Obtener el identificador del objeto en la posición del mouse debajo

Atenuar ?CurPoint?As?POINTAPI,?hwndUnderCursor?As?Long

GetCursorPos?CurPoi

nt

hwndUnderCursor?=?WindowFromPoint(CurPoint.x,?CurPoint.y)

'Si el mouse está ubicado en Form1.Dir1, maneja el evento de la rueda del mouse

Si hwndUnderCursor?=?hwndDirListBox?Entonces

Si?wParam?=?-entonces desplácese hacia abajo

Form1.Dir1.ListIndex=? Dir1.ListIndex?=?Form1.Dir1.ListIndex?1

¿Fin?Si

¿Fin?Si

Else

' Llame a la función de procesamiento de mensajes de ventana predeterminada de Dir1

NewWindowProc?=?CallWindowProc(OldWindowProc,?hwnd,?Msg,?wParam,?lParam)

End?If

Función Fin?

'Agregar control DirListBox (Dir1) y control CommandButton (Command1) al formulario:

Privado?Sub?Command1_Click()

>Imprimir ?Dir1.List(Dir1.ListIndex)

End?Sub

Private?Sub?Form_Load()

'Obtener el identificador del control Dir1

hwndDirListBox?=?Dir1.hwnd

'Guardar la dirección del procedimiento de ventana predeterminado del control Dir1

OldWindowProc?=?GetWindowLong(Dir1.hwnd ,?GWL_WNDPROC)

'Asignar el controlador de mensajes del control Dir1 a la función personalizada NewWindowProc

Call?SetWindowLong(Dir1.hwnd,?GWL_WNDPROC,?AddressOf?NewWindowProc)

¿Fin?Sub

¿Privado?Sub?Form_Unload(Cancelar?As?Integer)

Dim?lngReturnValue?As?Long

lngReturnValue? =?SetWindowLong(hwndDirListBox ,?GWL_WNDPROC,?OldWindowProc)

¿Fin?