Извлекает состояние указанного устройства мыши
Синтаксис
Использование
result = GetMouse (x, y [, [ wheel ] [, [ buttons ] [, [ clip ]]]])
Параметры
x
значение координаты x
y
значение координаты y
wheel
значение колеса прокрутки
buttons
состояние кнопок
clip
состояние отсечения (захвата мыши в графическом окне)
Возвращаемое значение
Описание
GetMouse извлекает позицию мыши и статус кнопок; информация
возвращается в переменных, переданных этой функции в качестве ссылки. Если
мышь не доступна, все переменные будут содержать значение -1.
Если в консольном режиме, х и у координаты являются символьными координатами
клетки; верхний левый угол экрана находится на координатах 0, 0; Если мышь
выходит из окна консоли, GetMouse возвращает последнюю координату мыши. Если
в консольном и полноэкранном режиме, значение колеса прокрутки не
возвращается.
В графическом режиме, x и y всегда возвращаются в пиксельных координатах по
отношению к верхнему левому углу экрана, который в данном случае является
0,0; пользовательские системы координат, устанавливаемые с помощью
View или
Window не влияют
на координаты, возвращаемые
GetMouse. Если мышь выходит из
окна, все значения устанавливаются в
-1.
Wheel - это счетчик колеса мыши; вращение колеса от вас создает
увеличение, вращение колеса к вам делает уменьшение. При запуске программы
или когда новый графический режим устанавливается через
Screen,
положение счетчика колеса сбрасывается в 0. FreeBASIC может и не
поддерживать колесо мыши для какой-то платформы, и в этом случае всегда
возвращается 0.
Buttons сохраняет статус кнопок как битовую маску: бит 0
устанавливается, если левая кнопка мыши нажата; бит 1 устанавливается, если
правая кнопка мыши нажата; бит 2 устанавливается, если средняя кнопка
мыши/колесо нажата.
Clip возвращает статус отсечения мыши; если
1, мышь
захвачена в пределах графического окна; если 0, мышь не захвачена.
Пример
Dim As Integer x, y, buttons, res
' Установим режим окна
ScreenRes 640, 480, 8
Do
' Получим координаты
мыши х, у и кнопки. Положение колеса не проверяем.
res = GetMouse (x, y, , buttons)
Locate 1, 1
If res <> 0 Then '' Ошибка
#ifdef __FB_DOS__
Print "Mouse or mouse driver not available"
#else
Print "Mouse not available or not on window"
#endif
Else
Print Using "Mouse position: ###:### Buttons: "; x; y;
If buttons And 1 Then Print "L";
If buttons And 2 Then Print "R";
If buttons And 4 Then Print "M";
Print " "
End If
Loop While Inkey = ""
End
'Пример 2: type-union-type структура
Type mouse
As Integer res
As Integer x, y, wheel, clip
Union
buttons As Integer
Type
Left:1 As Integer
Right:1 As Integer
middle:1 As Integer
End Type
End Union
End Type
Screen 11
Dim As mouse m
Do
m.res = GetMouse( m.x, m.y, m.wheel, m.buttons, m.clip )
Cls
Print Using "res = #"; m.res
Print Using "x = ###; y = ###; wheel = +###; clip = ##"; m.x; m.y; m.wheel; m.clip
Print Using "buttons = ##; left = #; middle = #; right = #"; m.buttons; m.left; m.middle; m.right
Sleep 10, 1
Loop While Inkey = ""
Различия диалектов
- Не доступна в диалекте -lang qb
, но есть псевдоним __Getmouse. Передаваемые
переменные должны быть типа Long
вместо Integer.
Различия платформ
- В Win32, возвращаемые значения изменения колеса не гарантируются в
полноэкранном режиме консоли.
- В DOS, значение "clip" не имеет никакого эффекта. Кроме того колесо и
средняя кнопка не будут работать, если не поддерживаются драйвером мыши. См.
также FaqDOS.
Отличия от QB
См. также