Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект: Изучение Visual Basic


Информационный Канал Subscribe.Ru

Здравствуйте! Вот и наступил для многих новый учебный год. Всем удачи в учебе!


Задачка

Продолжаем решать задачу. Немного ее усложним. Для начала краткое напоминание прошлого задания. Нужно было нарисовать окружность с парой точек на ней, противоположных друг другу и провести через них прямую. Затем эту пару сдвинуть на некоторый угол и снова провести прямую. Внимание, следующее задание. Теперь вторую точку надо смещать на угол в два раза больше, чем первый и снова соединять эти точки прямой. Таким образом вторая точка будет догонять первую (и обгонять ее). Не забудьте про комментарии. Удачи! В следующем задании вам снова будет предложено внести изменения в код.


Сообщения Windows

Сегодня поговорим о сообщении Windows WM_MOUSEWHEEL
Const WM_MOUSEWHEEL = &H20A

Сообщение WM_MOUSEWHEEL посылается окну, имеющему фокус при прокрутке колесика мыши, через функцию обратного вызова WindowProc

Параметры

wParam
Комбинация следующих флагов показывает нажатия клавиш во время отправки сообщения:
MK_CONTROL = &H8
Нажата клавиша Ctrl
MK_LBUTTON = &H1
Нажата левая кнопка мыши
MK_MBUTTON = &H10
Нажата средняя кнопка мыши
MK_RBUTTON = &H2
Нажата правая кнопка мыши
MK_SHIFT = &H4
Нажата клавиша Shift
MK_XBUTTON1 = &H20
Windows 2000: Нажата первая кнопка X
MK_XBUTTON2 = &H40
Windows 2000: Нажата вторая кнопка X
lParam
Координаты (x,y) курсора мыши относительно окна. Младшее слово содержит координату x, а старшее слово содержит координату y

Пример
' Перемещаем форму по экрану при помощи колесика мыши
' Поместите код в модуль,
' т.к. используется функция обратного вызова
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _
ByVal msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Public Const GWL_WNDPROC = (-4)
Public Const WM_MOUSEWHEEL = &H20A

Dim PrevProc As Long

Public Sub HookForm(Button As Long) PrevProc = SetWindowLong(Button, GWL_WNDPROC, AddressOf WindowProc) End Sub
Public Sub UnHookForm(Button As Long) SetWindowLong Button, GWL_WNDPROC, PrevProc End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long ' Скроллируем форму. wParam - величина перемещения If uMsg = WM_MOUSEWHEEL Then Form1.scrollmove (wParam) End If WindowProc = CallWindowProc( _ PrevProc, hwnd, uMsg, wParam, lParam) End Function
' Поместите код для Form1 Private Sub Form_Load() HookForm Me.hwnd End Sub
Private Sub Form_Unload(Cancel As Integer) UnHookForm Me.hwnd End Sub
Public Sub scrollmove(wParam As Long) ' Ограничим перемещение формы до края экрана ' Также отслеживаем состояние формы. ' Если окно развернуто, то не двигаем форму If Me.WindowState = vbMaximized Then Exit Sub If wParam < 0 Then If Me.Top <= 60 Then Me.Top = 0 Exit Sub Else Me.Top = Me.Top - 200 End If Else If (Screen.Height - Me.Top) <= Me.Height Then Me.Top = Screen.Height - Me.Height Else Me.Top = Me.Top + 200 End If End If End Sub

Распродажа

В одном из прошлых выпусков уже предлагалось купить старые книжки по программированию за символическую цену. Сегодня продолжение. Вам предлагается купить старые номера журнала Хакер за 20 руб (30 руб с диском) за 1999-2003. Часть журналов уже продана, кое-что осталось. Только для москвичей. Заказы на мыло gooddy@rambler.ru или мне


Присылайте ваши предложения по адресу rusproject@mail.ru
Посетите сайт Русский_Проект, где вы найдете другую интересную информацию
Давайте делать рассылку вместе!
Счастливого вам программирования!



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное