Newsgroup: it.comp.lang.visual-basic
Titolo: utilizzo della rotellina del mouse

 
          Salve a tutti
E' possibile utilizzare la rotellina del mouse in un'applicazione in VB6
Mi tornerebbe molto utile consultare una dgbrid con questa benedetta
rotellina.
grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 rotellina.
vedi se 
http://snipurl.com/mvhs
 può fare al caso tuo.
ciao! 

Il giorno Thu, 23 Feb 2006 17:44:29 GMT, 
mr...@email.it
 (mros) ha scritto:
Devi usare le API per la gestione del mouse
Qui trovi alcuni esempi:
http://shorterlink.com/?PB0TX0
http://shorterlink.com/?4FG8RC
--
ciao
  Stefano

Cosa intendi per utilizzare la rotellina...?
Ti allego un pò di documentazione:
Questo messaggio è inviato alla finestra attiva quando la rotella del
Mouse viene ruotata.
La procedura predefinita propaga il messaggio alla finestra Parent
finchè non trova una finestra che non processa il messaggio.
La finestra lo riceve attraverso la sua funzione WindowProc.
Sintassi
WM_MOUSEWHEEL
    WPARAM wParam
    LPARAM lParam;
Parametri
wParam
La parte alta della parola indica l'angolo di rotazione espresso in
multipli o divisioni di WHEEL_DELTA, che sono 120.
Un valore positivo indica che la rotella è stata girata avanti(lato
opposto all'utente), negativo indica che la rotella è stata ruotata
indietro, verso l'utente.
La parte bassa della parola indica se sono stati premuti più
VirtualKeys.
Questo parametro può essere uno o più dei seguenti valori:
MK_CONTROL
CTRL key è premuto.
MK_LBUTTON
Il Pulsante Mouse_Sinistro è premuto.
MK_MBUTTON
Il pulsante Mouse_Centrale è premuto.
MK_RBUTTON
Il Pulsante Mouse_Destro è premuto.
MK_SHIFT
SHIFT key è premuto.
MK_XBUTTON1
Windows 2000/XP: The first X button is down.
MK_XBUTTON2
Windows 2000/XP: The second X button is down.
fwKeys = GET_KEYSTATE_WPARAM(wParam)		;Restituisce un Integer
zDelta = GET_WHEEL_DELTA_WPARAM(wParam)		;Restituisce un Byte
Queste Funzioni pare non siano disponibili da VisualBasic, quindi per
estrarre il dato si ricorre all'estrazione della parte Alta e Bassa
della Word:
fwKeys = (wParam AND &HFFFF&)
zDelta = (wParam AND &HFFFF0000) \ &H10000
lParam
La parte bassa della parola specifica la Coordinata X del puntatore
relativa all'angolo superiore sinistro dello schermo.
La parte alta della parola specifica la Coordinata Y del puntatore
relativa all'angolo superiore sinistro dello schermo.
xPos = GET_X_LPARAM(lParam)			;Restituisce un Integer
yPos = GET_Y_LPARAM(lParam) 			;Restituisce un Integer
Queste funzioni sono disponibili in VB e VBA ma devono essere
ricostruite :
Funzioni per ricavare le Coordinate X,Y del Mouse:
Public Function GET_X_LPARAM(ByVal lParam As Long) As Long
   Dim hexstr As String
   hexstr = Right("00000000" & Hex(lParam), 8)
   GET_X_LPARAM = CLng("&H" & Right(hexstr, 4))
End Function
Public Function GET_Y_LPARAM(ByVal lParam As Long) As Long
   Dim hexstr As String
   hexstr = Right("00000000" & Hex(lParam), 8)
   GET_Y_LPARAM = CLng("&H" & Left(hexstr, 4))
End Function
Valore Restituito
Se un'applicazione processa questo messaggio, l'utilizzo tramite il
SendMessage ritorna ZERO.
CODICE
Ripropongo solo la WindowProc per la deviazione o disabilitazione della
notifica del movimento della Rotella:
Public Function NewWindowProc(ByVal hwnd 		As Long, _
ByVal msg 		As Long, _
ByVal wParam 	As Long, _
ByVal lParam 	As Long) As Long
Const WM_MOUSEWHEEL = &H20A
Dim fwKeys			As long
Dim zDelta			As long
Select Case msg
	Case WM_MOUSEWHEEL
fwKeys = (wParam AND &HFFFF&)
zDelta = (wParam AND &HFFFF0000) \ &H10000
	Forms!NomeForm.Caption=	"VKeys= " & fwkeys & " " & _
	"Delta= " & zDelta
		Exit Function	'Escludiamo l'effetto della Rotella
End Select
' Continua il normale processamento. IMPORTANTISSIMO!
NewWindowProc = CallWindowProc(OldWindowProc, _
hwnd, msg, _
wParam, lParam)
End Function
Eseguendo questa procedura potremo disabilitare l'effetto della
Rotella del Mouse ed evitarne pertanto le conseguenze di spostamento
RECORDS.
Questa procedura tuttavia non ha effetto sui controlli sottesi alla
Form, come ListBox o TextBox(con ScrollBar).
Al fine di ottenere un funzionamento completo immagino(non ho mai
testato la cosa) serva subclassare tutti i controlli in questione in
grado di essere influenzati dallo SCROLL della rotella.
Ciao
@Alex