Как отловить поворот колесика мыши и направление поворота?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SNV
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 08.09.2002 (Вс) 14:34
Откуда: СНГ

Как отловить поворот колесика мыши и направление поворота?

Сообщение SNV » 27.06.2003 (Пт) 18:20

Подскажите как отловить поворот колесика мыши в VB6, и направление поворота? Пытался использовать SetWindowsHookEx и mouse_event. Ничего не получается. Запутался в параметрах. Может кто-нибудь скинет работающий код. Буду очень благодарен.

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 27.06.2003 (Пт) 20:07

Код: Выделить всё
использование колесика на мышке

Прислал: smalig
Дата: 18.12.2000 18:53:20
Визитов: 235
Оценили: 4 [...]
Описание:

Пример использования мышки IntelliMouse в VB-приложениях

Текст:

'Global Declarations

Public Type POINTAPI
X As Long
Y As Long
End Type

Public Type MSG
hwnd As Long
message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type

Public Declare Function CallNextHookEx& Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Integer, lParam As Any)

Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Public Declare Function RegisterWindowMessage& Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String)

Public Declare Function SetWindowsHookEx& Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long)

Public Declare Function UnhookWindowsHookEx& Lib "user32" (ByVal hHook As Long)

Public Const WH_GETMESSAGE = 3
Public Const MSH_MOUSEWHEEL = "MSWHEEL_ROLLMSG"
Public IMWHEEL_MSG As Long
Public HWND_HOOK As Long

'Код

Public Function IMWheel(ByVal nCode As Long, ByVal wParam As Long, lParam As MSG) As Long

If lParam.message = IMWHEEL_MSG Then

Form1.WheelMoved lParam.wParam, lParam.pt.X, lParam.pt.Y
End If
IMWheel = CallNextHookEx(HWND_HOOK, nCode, wParam,
lParam)
End Function

Public Function IMWheel_Hook() As Long
IMWHEEL_MSG =
RegisterWindowMessage(MSH_MOUSEWHEEL)
HWND_HOOK = SetWindowsHookEx(WH_GETMESSAGE, _
AddressOf IMWheel, 0, GetCurrentThreadId)
End Function

Public Sub IMWheel_Unhook()
UnhookWindowsHookEx HWND_HOOK
End Sub
put this code In a form:
Option Explicit

Private Sub Form_Load()
IMWheel_Hook
End Sub

Public Sub WheelMoved(ByVal delta As Long, _
X As Long, Y As Long)
Debug.Print delta, X, Y
End Sub

Private Sub Form_Unload(Cancel As Integer)
IMWheel_Unhook
End Sub
[/quote]
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 27.06.2003 (Пт) 22:02

а если у меня logitech mx 500 то как будет этот код выгдядеть??? потому как этот код у меня не работает!!!! есть что нить совершенное, подходящее для всех мышей??? ну или например стандарных ps/2???
This message will self destruct in five seconds!!!

Vasya
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 23.04.2002 (Вт) 16:49
Откуда: Togo

Сообщение Vasya » 28.06.2003 (Сб) 9:12

Галимый пример. У меня он тоже нифига не работает!
Посмотри пример тут


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

    TopList