Координаты указателя мыши

Способ 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