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


WM_HSCROLL

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

Параметры

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

Примечания

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

См. также

Пример

Declare MyWindowCallback(WindowId, Message, wParam, lParam)

Global k = 0, hSlider1, hSlider2
GUI = OpenWindow(0, 0, 0, 420, 285,"Горизонтальный", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
hSlider1 = TrackBarGadget(1, 10, 5, 200, 30, 0, 185)
hSlider2 = TrackBarGadget(2, 10, 35, 200, 30, 0, 185)
TextGadget(3, 10, 140, 400, 125, "WM_HSCROLL - сообщение позволяет получить величину регулятора в момент его использования, а не зацикливать проверку состояния" + #LF$ + "Если горизонтальных регуляторов более одного, то функция срабатывает при задействовании любого из горизонтальных регуляторов, а также при использовании полосы прокрутки.",0)
TextGadget(4, 10, 75, 400, 55, "",0)

SetWindowCallback(@MyWindowCallback())

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

Procedure MyWindowCallback(WindowId, Message, wParam, lParam)
    Protected Result = #PB_ProcessPureBasicEvents, sMsg$, nScrollCode, value

    Select Message
        Case #WM_HSCROLL
;             Это (LoWord и HiWord) должно быть в Protected процедуры а не под #WM_HSCROLL, если используется другие WM_Сообщения
            nScrollCode = wParam & $FFFF ; LoWord
            value = wParam >> 16        ; HiWord
            Select lParam
                Case hSlider1
                    sMsg$ = "Слайдер = 1" + #LF$ + "Значение = "
                    Select nScrollCode
                        Case #SB_THUMBTRACK
                            sMsg$ + value + #LF$ + "Метод = Удерживание левой кнопкой мыши"
                        Case #SB_THUMBPOSITION
                            sMsg$ + value + #LF$ + "Метод = Колёсиком мыши"
                        Case #SB_LINELEFT
                            value = GetGadgetState(1)
                            sMsg$ + value + #LF$ + "Метод = Стрелка влево/вверх"
                        Case #SB_LINERIGHT
                            value = GetGadgetState(1)
                            sMsg$ + value + #LF$ + "Метод = Стрелка вправо/вниз"
                        Case #SB_PAGELEFT
                            value = GetGadgetState(1)
                            sMsg$ + value + #LF$ + "Метод = Клик слева от ползунка"
                        Case #SB_PAGERIGHT
                            value = GetGadgetState(1)
                            sMsg$ + value + #LF$ + "Метод = Клик справа от ползунка"
                    EndSelect
                    If nScrollCode <> 8
                        SetGadgetText(4 , sMsg$)
                    EndIf
                    ;          Прозрачность(0, 255 - GetGadgetState(1))
                Case hSlider2
                    If nScrollCode = #SB_THUMBTRACK
                        SetGadgetText(4 , "2 - " + value)
                    EndIf
                Case 0
                    If nScrollCode = #SB_THUMBTRACK
                        SetGadgetText(4 , "3 - " + value)
                    EndIf
            EndSelect

            k + 1
            SetWindowTitle(0 , "Вызов " + k + " раз, c=" + nScrollCode + ", v=" + value)
    EndSelect
    ProcedureReturn Result
EndProcedure