WM_VSCROLL
Сообщение выполняется при изменении вертикальных регуляторов (Slider) и полосы прокрутки.
Параметры
Указанные параметры передаются системой.$wParam | Двойное слово содержит: младшее слово = код уведомления Константы определяющие метод перемещения ползунка регулятора (ScrollBarConstants.au3) $SB_LINEUP = 0 ; Стрелка вверх $SB_LINEDOWN = 1 ; Стрелка вниз $SB_PAGEUP = 2 ; Клик сверху от ползунка $SB_PAGEDOWN = 3 ; Клик снизу от ползунка $SB_THUMBPOSITION = 4 ; Вращение колёсика мыши $SB_THUMBTRACK = 5 ; Нажатие левой кнопкой мыши $SB_ENDSCROLL = 8 ; Отпуск левой кнопкой мыши старшее слово = текущее значение ползунка |
$lParam |
Дескриптор элемента |
Примечания
Смотрите функцию GUIRegisterMsg.См. также
WM_HSCROLLПример
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
#include <ScrollBarConstants.au3>
Global $k = 0
GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
$GUI = GUICreate("Вертикальный", 350, 250, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_VSCROLL))
$slider1 = GUICtrlCreateSlider(15, 20, 30, 200, $TBS_VERT)
GUICtrlSetLimit(-1, 185, 0)
$hSlider_Handle1 = GUICtrlGetHandle(-1)
$slider2 = GUICtrlCreateSlider(55, 20, 30, 200, $TBS_VERT)
GUICtrlSetLimit(-1, 185, 0)
$hSlider_Handle2 = GUICtrlGetHandle(-1)
GUICtrlCreateLabel(' WM_VSCROLL - сообщение позволяет получить величину регулятора в момент его использования, а не зацикливать проверку состояния.' & @LF & @LF & ' Если вертикальных регуляторов более одного, то функция срабатывает при задействовании любого из вертикальных регуляторов, а также при использовании полосы прокрутки.', 100, 10, 245, 180)
$condition = GUICtrlCreateLabel('', 100, 170, 245, 70)
GUISetState()
Do
Until GUIGetMsg() = -3
Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
#forceref $Msg, $wParam, $lParam
Local $nScrollCode = BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
Local $value = BitShift($wParam, 16) ; _WinAPI_HiWord
Switch $lParam
Case $hSlider_Handle1
$sMsg = 'Слайдер = 1' & @LF & 'Значение = '
Switch $nScrollCode
Case $SB_THUMBTRACK
$sMsg &= $value & @LF & 'Метод = Удерживание левой кнопкой мыши'
Case $SB_THUMBPOSITION
$sMsg &= $value & @LF & 'Метод = Колёсиком мыши'
Case $SB_LINEUP
$value = GUICtrlRead($slider1)
$sMsg &= $value & @LF & 'Метод = Стрелка влево/вверх'
Case $SB_LINEDOWN
$value = GUICtrlRead($slider1)
$sMsg &= $value & @LF & 'Метод = Стрелка вправо/вниз'
Case $SB_PAGEUP
$value = GUICtrlRead($slider1)
$sMsg &= $value & @LF & 'Метод = Клик сверху от ползунка'
Case $SB_PAGEDOWN
$value = GUICtrlRead($slider1)
$sMsg &= $value & @LF & 'Метод = Клик снизу от ползунка'
EndSwitch
If $nScrollCode <> 8 Then GUICtrlSetData($condition, $sMsg)
WinSetTrans($GUI, "", 255 - GUICtrlRead($slider1))
Case $hSlider_Handle2
If $nScrollCode = $SB_THUMBTRACK Then GUICtrlSetData($condition, '2 - ' & $value)
Case 0
If $nScrollCode = $SB_THUMBTRACK Then GUICtrlSetData($condition, '3 - ' & $value)
EndSwitch
$k += 1
WinSetTitle($GUI, '', 'Вызов ' & $k & ' раз, c=' & $nScrollCode & ', v=' & $value)
Return $GUI_RUNDEFMSG
EndFunc