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