Функция WM_VSCROLL

         Описание функции


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