Utiliser la molette de la souris dans vb

Soyez le premier à donner votre avis sur cette source.

Vue 16 116 fois - Téléchargée 2 217 fois

Description

Tout le code est dans un projet complet dans le ZIP.

Conclusion :


Le code utilise une fonciton api "hook" déclarée dans un module qui écoute les messages envoyés par la souris et détecte le mouvements de la roulette.

Un contrôle utilisateur lance un event dans ce cas, et cet event est utilisé dans le code de la form1 pour afficher une valeur.

Attention à bien utiliser la détection des erreurs pour désactiver la fonction hook en cas d'erreur, sinon VB se ferme !
(fonction wheelCtl.unHook).

Code issu de la MSDN, modifié. Fonctionne sous W2K et VB6Sp5.

Présente l'utilisation des API, d'une fonction Hook, d'une fonction CallBack et des events ;-)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

LeCarto
Messages postés
16
Date d'inscription
mardi 28 novembre 2000
Statut
Membre
Dernière intervention
6 juillet 2007

Houla mais certainement, faites donc, moi j'ai juste posté ce code pour information, de toutes façons avec VB.Net c'est obsolète, merci d'avoir complété.
sauron1531
Messages postés
1
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
4 mai 2004

Salut,
ton code est pas mal, il manque juste le controle pour définir oukélamouse à "out" . Je te conseille de mettre le code suivant à la ligne 42 du code de la form1:

If mPosX > (Form1.Width / Screen.TwipsPerPixelX) Or mPosX < 0 Or _
mPosY < 0 Or mPosY > (Form1.Height / Screen.TwipsPerPixelY) Then
oukélamouse = "Out" ' elle est dehors
Else
' ancien code
oukélamouse = "Form1" 'Valeur par défaut
End If
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
Salut. sympa , mais ton code est contraignant à utiliser. Beaucoup de code ( complexe : API ) est necessaire dans la Form. L'ideal, serait, selon moi, de faire faire le boulot directement par ton composant. :
tu lance le hook depuis le composant. ( ex : Wheel.Init / Wheel.Stop ) )
de plus, le composant cité dans le module , lorsque tu detectes un mouvement de la souris est ecris en dur, tu dois donc créer une fonction de hook par form ou les mouvements molette t'interessent.

pour ta variable oukélélamouse , tu peux utiliser l'API WindowFromPoint , qui renvoie le handle de la fenetre survolee....

petite optimisation algorithmique, encore , mieux vaux utiliser un select case , ou un if then.... elseif .... elseif.......end if , plutot que de mettre tant de conditions le unes sous les autres.

dans Form_Load , plutot qu'un goto laSuite , tu peux faire un Exit Sub.....

voila , c'est juste mon point de vue , si tu te dis que je suis un sale con, et que ton code est bien comme ca , libre a toi.... je dis ca pour t'aider.....
ça marche sous vb mais pas dans l'exe !
c clair que c chiant que la molette marche pas sous vb :) thx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.