Дата публикации статьи: 09.07.2003 00:00
Данная статья рассматривает приемы работы с мышкой. Не мне вам объяснять, что
такое мышка. Я помню те времена, когда в компьютерных клубах мышку выдавали
под большой залог. А сейчас мышь - обязательный атрибут любого настольного компьютера,
как клавиатура, монитор, системный блок... принтер... модем... GeForce3... PentiumIII/Athlon
1000 Гц... размечтался я что-то...
Необходимые разъяснения:
В данной статье все декларируемые функции обозначены как Private, что позволяет
использовать их непосредственно в коде формы. Но более правильным является декларирование
функций в дополнительном модуле(Меню Project/Add Module - нажмите Enter)
Список рассматриваемых вопросов:
0. Событие MousePointer
0.1 Событие MouseMove, MouseDown, MouseUp
1. Как установить время двойного нажатия клавиши мыши
2. Переместить курсор мыши на новое место
3. Как заблокировать мышку
4. Как отследить местоположение курсора
5. Поменять программно кнопки мыши
6. Скрыть/показать курсор мыши
------------------------------------
0. Прежде всего хочется отметить событие MousePointer - при определенном его
значении курсор может менять свой вид
Константа Значение Описание
vbDefault 0 Курсор по умолчанию
vbArrow 1 Стрелка
vbCrosshair 2 Крестик
vbIbeam 3 Стандартный курсор для текста.
vbIconPointer 4 Иконка
vbSizePointer 5 Крестик со стрелками во все четыре стороны
vbSizeNESW 6 Двухконечная стрелка (вниз/влево - вверх/вправо)
vbSizeNS 7 Двухконечная стрелка (вверх-вниз)
vbSizeNWSE 8 Двухконечная стрелка (вверх/влево - вниз/вправо)
vbSizeWE 9 Двухконечная стрелка (влево-вправо)
vbUpArrow 10 Стрелка вверх
vbHourglass 11 Часы
vbNoDrop 11 Перечеркнутый круг
vbArrowHourglass 13 Стрелка с часами
vbArrowQuestion 14 Стрелка с вопросом. (обычно используется для контекстной
справки)
vbSizeAll 15 Аналогично значению 5
Custom 99 Курсор, определяемый пользователем. Для использования своего курсора,
его надо поместитьт в событие MouseIcon
Пример использования:
Form1.MousePointer = 14
Form1.MousePointer = vbHourglass
------------------------------------
0.1 При движении мыши возникает событие MouseMove. Данное событие позволяет
отследить местоположение мыши. Для отслеживания нажатий на кнопки мыши используются
события MouseDown и MouseUp.
Событие Описание
MouseMove Событие возникает при движении мыши
MouseDown Событие возникает при нажатии на кнопку мыши
MouseUp Событие возникает при опускании кнопки мыши
------------------------------------
1. Как установить время двойного нажатия клавиши мыши
Данную операцию вы можете проделать непосредственно в системе: ПУСК/Панель
Управления/Мышь и меняете ползунок DoubleClickSpeed.
В примере замените цифру '500' на время (в миллисекундах), которое нужно вам:
1000 миллисекунд = 1 секунда
Private Declare Function SetDoubleClickTime Lib "user32" (ByVal wCount
As Long) As Long
Private Sub Form_Load()
s = SetDoubleClickTime(500)
End Sub
------------------------------------
2. Переместить курсор мыши на новое место
Данный пример покажет, как переместить курсор мыши на новое место. Замените
цифры в скобках (500,600) на те, которые нужны вам. Цифры означают, на какое
расстояние (в пикселях экрана) переместится курсор мыши относительно левого/верхнего
угла вашего монитора.
Private Declare Function SetCursorPos& Lib "user32" (ByVal X
As Long, ByVal Y As Long)
Private Sub Form_Load()
SetCursorPos 500, 600
End Sub
------------------------------------
3. Как заблокировать мышку
Необходимое предупреждение!!! После выполнения данного кода вам только останется
перезагрузить систему, прежде чем вы сможете снова работать с мышью
Shell "rundll32 mouse,disable"
------------------------------------
4. Как отследить местоположение курсора
Прежде всего необходимо декларировать функцию, отвечающую за определение местоположения
курсора, а также определить тип передаваемых данных
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI)
As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Далее: положите на форму компоненты Timer и Label. Установите значение Inteval
таймера в 1.
Private Sub Timer1_Timer()
Dim cPos As POINTAPI
GetCursorPos cPos 'Вызываем функцию, которая устанавливает позицию курсора
Label1.Caption = cPos.X & ", " & cPos.Y 'Наблюдаем за перемещением
курсора
End Sub
------------------------------------
5. Поменять программно кнопки мыши
Для того, чтобы программно поменять местами кнопки мыши, вам достаточно объявить
нижеследующую функцию SwapMouseButton как...
Private Declare Function SwapMouseButton& Lib "user32" (ByVal
bSwap As Long) ' если вы будете использовать ее в одном модуле с кодом замены
кнопок, или
Public Declare Function SwapMouseButton& Lib "user32" (ByVal bSwap
As Long) ' если вы захотите вынести функцию в отдельный модуль, что предпочтительней.
Для программной замены вам достаточно использовать вышеприведенную функцию как:
SwapMouseButton& 1 ' событие: кнопки поменялись местами
SwapMouseButton& 0 ' событие: все вернулось в исходное состояние
------------------------------------
6. Скрыть/показать курсор мыши
Иногда необходимо спрятать курсор на некоторое время, а хатем показать его.
Вы можете воспользоваться нижепривиденным кодом, но ПОМНИТЕ: Перед выходом из
вашей программы, не забудьте показать его.
Declare Function ShowCursor& Lib "user32" (ByVal bShow As Long)
ShowCursor& 0 'Скрыть курсор
ShowCursor& 1 'Показать курсор
|