Dove si trova il mouse?

In VB per conoscere la posizione del mouse si sfrutta l'evento MouseMove dei control; questa posizione però è relativa al control e il VB non offre alcun modo per conoscere le coordinate relative all'intero schermo. Mediante le API si può ricavare la posizione del puntatore semplicemente chiamando la funzione  GetCursorPos:

Type POINTAPI
x As Long
y As Long
End Type

Dim pos As POINTAPI
GetCursorPos pos


Se invece si desidera conoscere la posizione del puntatore relativa ad un particolare control si può chiamare la funzione ScreenToClient passandogli la variabile pos impostata in precedenza :

ScreenToClient Me.hWnd, pos

Se invece ci si trova all'interno dell'evento MouseMove e si desidera trasformare la posizione relativa al video si può chiamare la funzione ClientToScreen :

pos.X = X / Screen.TwipsPerPixelX
pos.Y = Y / Screen.TwipsPerPixelY
ClientToScreen control.hWnd, pos

Tutte le coordinate utilizzate dalle API sono in pixel mentre in VB, in relazione alla proprietà ScaleMode che solitamente è impostata a twips, quindi si devono
convertire in base alla risoluzione dello schermo.
Sempre rimanendo nell'argomento esiste una funzione che consente di conoscere la posizione di un control rispetto allo schermo, la funzione GetWindowRect :

Dim rec As RECT
GetWindowsRect control.hWnd, rec

Testato su: Windows 98, Windows Me, Windows 2000 Professional