Const WM_HSCROLL = &H114
Сообщение WM_HSCROLL отправляется окну, когда пользователь щелкает по горизонтальной полосе прокрутки окна, либо при щелчке на элементе управления Полоса прокрутки
Должно возвращаться 0
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 | Пользователь перемещает ползунок. Данное сообщение постоянно генерируется во время перемещения. Старшее слово содержит текущую позицию ползунка |
' Если дочернее окно в 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