Описание функции
WM_MOUSEWHEEL
Сообщение выполняется при вращении колёсика мыши.
Параметры
Указанные параметры передаются системой.wParam | Содержит комбинацию одновременно нажатых клавиш: младшее слово MK_CONTROL = $8 MK_LBUTTON = $1 MK_MBUTTON = $10 MK_RBUTTON = $2 MK_SHIFT = $4 MK_XBUTTON1 = $20 MK_XBUTTON2 = $40 старшее слово 120 - вращение вверх -120 - вращение вниз |
lParam |
Двойное слово содержит: младшее слово = X - координата мыши относительно экрана старшее слово = Y - координата мыши относительно экрана |
Примечания
Смотрите функцию SetWindowCallback.Пример
; MK_CONTROL = 0x8
; MK_LBUTTON = 0x1
; MK_MBUTTON = 0x10
; MK_RBUTTON = 0x2
; MK_SHIFT = 0x4
; MK_XBUTTON1 = 0x20
; MK_XBUTTON2 = 0x40
EnableExplicit
#Gui = 0
Enumeration
#Label1
#Label2
#Label3
#Label4
#Input
EndEnumeration
Global k1 = 0
Global k2 = 0
Procedure.s _KeysHeld(iKeys)
Protected sKeyHeld.s
If iKeys & #MK_CONTROL
sKeyHeld + "CTRL" + #CRLF$
EndIf
If iKeys & #MK_LBUTTON
sKeyHeld + "Левая кнопка мыши" + #CRLF$
EndIf
If iKeys & #MK_MBUTTON
sKeyHeld + "Средняя кнопка мыши" + #CRLF$
EndIf
If iKeys & #MK_RBUTTON
sKeyHeld + "Правая кнопка мыши" + #CRLF$
EndIf
If iKeys & #MK_SHIFT
sKeyHeld + "SHIFT" + #CRLF$
EndIf
If iKeys & #MK_XBUTTON1
sKeyHeld + "Windows 2000/XP: Первая X кнопка" + #CRLF$
EndIf
If iKeys & #MK_XBUTTON2
sKeyHeld + "Windows 2000/XP: Вторая X кнопка" + #CRLF$
EndIf
ProcedureReturn sKeyHeld
EndProcedure
Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
Protected Delta, key.s, X, Y
Select Message
Case #WM_MOUSEWHEEL
Delta = wParam >> 16 ; HiWord
key = _KeysHeld(wParam & $FFFF) ; LoWord
X = lParam & $FFFF ; LoWord
Y = lParam >> 16 ; HiWord
; Одновременно нажатые клавиши
If key
key = #CRLF$ + "Одновременно удерживаемые клавиши:" + #CRLF$ + key
EndIf
SetGadgetText(#Label3, "Delta: " + Delta + ", X: " + X + ", Y: " + Y + key)
If Delta > 0
k1 + 1
SetGadgetText(#Label1, "колесо мыши сдвинулось вверх " + Str(k1) + " раз")
SetWindowTitle(#Gui, "вверх " + Str(k1) + " раз, вниз " + Str(k2) + " раз")
SetGadgetText(#Input, Str(k1) + " - " + Str(k2) + " = " + Str(k1 - k2))
Else
k2 + 1
SetGadgetText(#Label2, "колесо мыши сдвинулось вниз " + Str(k2) + " раз")
SetWindowTitle(#Gui, "вверх " + Str(k1) + " раз, вниз " + Str(k2) + " раз")
SetGadgetText(#Input, Str(k1) + " - " + Str(k2) + " = " + Str(k1 - k2))
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(#Gui, 0, 0, 370, 200, "WM_MOUSEWHEEL", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
TextGadget(#Label4,5, 5, 360, 34,"Функция WM_MOUSEWHEEL выполняется при вращения колёсика мыши. Удерживайте Ctrl, Shift и кнопки мыши при вращении колёсика.")
TextGadget(#Label1,20, 45, 226, 17,"колесо мыши сдвинулось вверх 0 раз")
TextGadget(#Label2,20, 62, 226, 17,"колесо мыши сдвинулось вниз 0 раз")
TextGadget(#Label3,10, 80, 360, 115,"")
StringGadget(#Input , 250, 50, 100, 21, "")
SetWindowCallback(@MyWindowCallback())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf