Сообщение WM_HSCROLL

Const WM_HSCROLL = &H114

Сообщение WM_HSCROLL отправляется окну, когда пользователь щелкает по горизонтальной полосе прокрутки окна, либо при щелчке на элементе управления Полоса прокрутки

Возвращаемое значение

Должно возвращаться 0

Параметры

wParam
Младшее слово содержит значение, определяющее поведение полосы прокрутки. Может иметь одно из следующих значений:
SB_ENDSCROLL = 8 Завершить скроллинг
SB_LEFT = 6 Прокрутка влево до конца
SB_RIGHT = 7 Прокрутка вправо до конца
SB_LINELEFT = 0 Прокрутка на одну единицу влево
SB_LINERIGHT = 1 Прокрутка на одну единицу вправо
SB_PAGELEFT = 2 Прокрутка на одну страницу влево
SB_PAGERIGHT = 3 Прокрутка на одну страницу вправо
SB_THUMBPOSITION = 4 Пользователь перемещает ползунок и отпускает кнопку мыши. Старшее слово содержит позицию ползунка по окончании перемещения
SB_THUMBTRACK = 5 Пользователь перемещает ползунок. Данное сообщение постоянно генерируется во время перемещения. Старшее слово содержит текущую позицию ползунка
Старшее слово содержит позицию ползунка при использовании SB_THUMBPOSITION или SB_THUMBTRACK. В других случаях старшее слово не используется
lParam
Если сообщение посылается элементу управления Полоса прокрутки, то данный параметр является его дескриптором. В других случаях параметр равен NULL

Пример

' Если дочернее окно в MDI-форме
' находится частично за пределами главного окна,
' то в MDI-форме появляются полосы прокрутки,
' позволяющие прокручивать главное окно с помощью мыши.
' С помощью данного примера мы добавим возможность
' управления полосами прокрутки с помощью клавиатуры
' Добавьте в проект форму MDIForm1 и ее дочернюю форму Form1,
' а также модуль *.bas
' Код для модуля
Option Explicit

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
      (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
       lParam As Any) As Long

Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
       ByVal wCmd As Long) As Long

Public Const SB_BOTTOM = 7
Public Const SB_LEFT = 6
Public Const SB_LINEDOWN = 1
Public Const SB_LINELEFT = 0
Public Const SB_LINERIGHT = 1
Public Const SB_LINEUP = 0
Public Const SB_PAGEDOWN = 3
Public Const SB_PAGELEFT = 2
Public Const SB_PAGERIGHT = 3
Public Const SB_PAGEUP = 2
Public Const SB_RIGHT = 7
Public Const SB_THUMBPOSITION = 4
Public Const SB_THUMBTRACK = 5
Public Const SB_TOP = 6
Public Const SB_ENDSCROLL = 8

Public Const WM_HSCROLL = &H114
Public Const WM_VSCROLL = &H115

Public Const GW_CHILD = 5

' Создадим процедуру для обработки
' нажатий клавиш
Public Sub processKey(KeyCode As Integer)
   Dim mdiclientwin As Long

   Select Case KeyCode
    Case vbKeyDown
      mdiclientwin = GetWindow(MDIForm1.hwnd, GW_CHILD)
      SendMessage mdiclientwin, WM_VSCROLL, SB_LINEDOWN, ByVal 0&

    Case vbKeyUp
      mdiclientwin = GetWindow(MDIForm1.hwnd, GW_CHILD)
      SendMessage mdiclientwin, WM_VSCROLL, SB_LINEUP, ByVal 0&

    Case vbKeyPageUp
      mdiclientwin = GetWindow(MDIForm1.hwnd, GW_CHILD)
      SendMessage mdiclientwin, WM_VSCROLL, SB_PAGEUP, ByVal 0&

    Case vbKeyPageDown
      mdiclientwin = GetWindow(MDIForm1.hwnd, GW_CHILD)
      SendMessage mdiclientwin, WM_VSCROLL, SB_PAGEDOWN, ByVal 0&

    Case vbKeyRight
      mdiclientwin = GetWindow(MDIForm1.hwnd, GW_CHILD)
      SendMessage mdiclientwin, WM_HSCROLL, SB_LINERIGHT, ByVal 0&

    Case vbKeyLeft
      mdiclientwin = GetWindow(MDIForm1.hwnd, GW_CHILD)
      SendMessage mdiclientwin, WM_HSCROLL, SB_LINELEFT, ByVal 0&

   End Select

End Sub

' Вставьте код для дочернего окна Form1
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   processKey KeyCode
End Sub

Смотри также

WM_VSCROLL

Категория

Полоса прокрутки