Описание функции
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