Координаты указателя мыши
Способ I
MouseMove
Здесь надо сделать оговорку, что используя первый способ получения
заветных координат курсора, вы получите координаты относительно системы
координат формы (начало координат - левый верхний угол, под заголовком
окна). В событии MouseMove формы определены две переменные - X и Y, которые
как раз и хранят значения координат курсора (по осям Х и Y соответственно).
Использовать их в программе не составит большого труда, здесь ничего
сверхестественного нет. Вот пример:
Private Sub Form_MouseMove(Button _
As Integer, Shift As Integer, _
X As Single, Y As Single)
MsgBox "Абсцисса курсора - " & X
MsgBox "Ордината курсора - " & Y
End Sub
Значения X и Y возвращаются в твипах, а не в пикселах!!! Если вам нужны
пикселы, то просто разделите полученный результат на 15.
Способ II
API-
При этом координаты вы получите относительно системы координат экрана (начало - левый
верхний угол). Перед объявлением функции вы должны объявить пользовательский
тип переменной (POINTAPI), которая будет хранить два значения - X и Y.
Например:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
Private Sub Timer1_Timer()
Dim coord As POINTAPI
GetCursorPos coord
MsgBox coord.x 'вместо MsgBox используйте что-то свое
MsgBox coord.y
End Sub
Эта API-функция возвращает значения координаты в пикселах. Для начала мы
объявили новый (пользовательский) тип переменной, который может содержать
два значения координаты, а затем объявили переменную coord нового типа
(POINTAPI). Функция GetCursorPos в эту самую переменную записала два
значения координаты точки, в которой находился курсор на момент вызова.С
помощью API мы можем не только узнать координаты курсора, но у установить
их. Это возможно с помощью функции SetCursorPos. Например так:
Private Declare Function SetCursorPos Lib _
"user32" (ByVal x As Long, ByVal y As Long) As Long
Private Sub Command1_Click()
SetCursorPos 120, 300 'координаты - в пикселах!
End Sub
С помощью всего этого можно например сделать так, чтобы курсор мышки
перемещался вслед за фокусом на форме. С помощью API еще можно
прятать\показывать курсор. Это выполняет функция ShowCursor.
Private Declare Function ShowCursor _
Lib "user32" (ByVal bShow As Long) As Long
Private Sub Command1_Click()
ShowCursor 0 '0 - спрятать курсор, 1 - показать
End Sub