Ir ao conteúdo
  • Cadastre-se

Visual Basic 6 - API - mouse wheel


Cambalinho

Posts recomendados

eu tenho 1 modulo que funciona muito com bem com o touchpad(falando em mouse wheel), mas ao usar a roda do rato é ignorado. porque esta incompatiblidade?

(eu uso 1 caixa de texto para captar as mensagens)

'Special thanks:
'LaVolpe
'www.vbforums.com

Option Explicit

Private Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32.dll" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32.dll" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByRef lParam As Any) 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 FlatSB_SetScrollPos Lib "comctl32" (ByVal hwnd As Long, ByVal code As Long, ByVal nPos As Long, ByVal fRedraw As Boolean) As Long

Private Type CWPSTRUCT
lParam As Long
wParam As Long
message As Long
hwnd As Long
End Type

Private Const WH_CALLWNDPROC As Long = 4&
Private Const WM_HSCROLL As Long = &H114
Private Const WM_VSCROLL As Long = &H115
Private Const WM_MOUSEWHEEL As Long = &H20A
Private Const WM_KEYDOWN = &H100

Private m_HookID As Long

Private Const SB_HORZ = 0
Private Const SB_VERT = 1
Public MouseOverControl As Long
Public lngHWNDMouseWheel As Long

Public Sub HookMe(ByVal StartHook As Boolean)
If StartHook Then
If m_HookID = 0& Then m_HookID = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf CallWndProc, 0&, App.ThreadID)
ElseIf m_HookID Then
UnhookWindowsHookEx m_HookID
m_HookID = 0&
End If
End Sub

Private Function CallWndProc(ByVal nCode As Long, ByVal uMsg As Long, CWP As CWPSTRUCT) As Long

If nCode > -1& And MouseOverControl > 0 Then
Select Case CWP.message
Case WM_HSCROLL Or WM_MOUSEWHEEL:
If CWP.wParam = 0 Then 'Left mouse wheel rotated
SendMessage MouseOverControl, WM_KEYDOWN, 1002, 0
ElseIf CWP.wParam = 1 Then 'Right mouse wheel rotated
SendMessage MouseOverControl, WM_KEYDOWN, 1003, 0
End If
Case WM_VSCROLL:
If CWP.wParam = 0 Then 'Up mouse wheel rotated
SendMessage MouseOverControl, WM_KEYDOWN, 1000, 0
ElseIf CWP.wParam = 1 Then 'Down mouse wheel rotated
SendMessage MouseOverControl, WM_KEYDOWN, 1001, 0
End If
End Select
End If
CallWndProc = CallNextHookEx(m_HookID, nCode, uMsg, CWP)
Call ChangeScroolPosition
End Function

Public Sub ChangeScroolPosition()
FlatSB_SetScrollPos lngHWNDMouseWheel, SB_VERT, 2, False
FlatSB_SetScrollPos lngHWNDMouseWheel, SB_HORZ, 2, False
End Sub

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!