Функция WM_HSCROLL

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


WM_HSCROLL

Сообщение выполняется при изменении горизонтальных регуляторов (Slider) и полосы прокрутки.

Параметры

Указанные параметры передаются системой.
$wParam Двойное слово содержит:
    младшее слово = код уведомления
        Константы определяющие метод перемещения ползунка регулятора (ScrollBarConstants.au3)
        $SB_LINELEFT = 0 ; Стрелка влево
        $SB_LINERIGHT = 1 ; Стрелка вправо
        $SB_PAGELEFT = 2 ; Клик слева от ползунка
        $SB_PAGERIGHT = 3 ; Клик справа от ползунка
        $SB_THUMBPOSITION = 4 ; Вращение колёсика мыши
        $SB_THUMBTRACK = 5 ; Нажатие левой кнопкой мыши
        $SB_ENDSCROLL = 8 ; Отпуск левой кнопкой мыши
    старшее слово = текущее значение ползунка
$lParam Дескриптор элемента

Примечания

Смотрите функцию GUIRegisterMsg.

См. также

WM_VSCROLL

Пример

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ScrollBarConstants.au3>

Global $k = 0
GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")
$GUI = GUICreate("Горизонтальный", 320, 285, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_HSCROLL))

$slider1 = GUICtrlCreateSlider(10, 5, 200, 30)
GUICtrlSetLimit(-1, 185, 0)
$hSlider_Handle1 = GUICtrlGetHandle(-1)

$slider2 = GUICtrlCreateSlider(10, 35, 200, 30)
GUICtrlSetLimit(-1, 185, 0)
$hSlider_Handle2 = GUICtrlGetHandle(-1)

GUICtrlCreateLabel('     WM_HSCROLL - сообщение позволяет получить величину регулятора в момент его использования, а не зацикливать проверку состояния.' & @LF & @LF & '     Если горизонтальных регуляторов более одного, то функция срабатывает при задействовании любого из горизонтальных регуляторов, а также при использовании полосы прокрутки.', 10, 140, 300, 125)
$condition = GUICtrlCreateLabel('', 10, 75, 300, 55)
GUISetState()

Do
Until GUIGetMsg() = -3

Func WM_HSCROLL($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_LINELEFT
                    $value = GUICtrlRead($slider1)
                    $sMsg &= $value & @LF & 'Метод = Стрелка влево/вверх'
                Case $SB_LINERIGHT
                    $value = GUICtrlRead($slider1)
                    $sMsg &= $value & @LF & 'Метод = Стрелка вправо/вниз'
                Case $SB_PAGELEFT
                    $value = GUICtrlRead($slider1)
                    $sMsg &= $value & @LF & 'Метод = Клик слева от ползунка'
                Case $SB_PAGERIGHT
                    $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