Salut, voilà une source qui pourra être assez utile : il s'agit d'un usercontrol qui permet d'ajouter les évênements :
KeyDown(KeyCode As Long, Param As Long)
KeyUp(KeyCode As Long, Param As Long)
MouseHover()
MouseMove()
MouseLeave()
MouseWheel(ByVal Sens As WHEEL_SENS)
MouseDown(Button As MouseButtonConstants)
MouseUp(Button As MouseButtonConstants)
MouseDblClick(Button As MouseButtonConstants)
à tous vos contrôles, y compris vos propres usercontrol. La seule condition est de posséder la propriété hWnd.
Gestion des 3 boutons de la souris et de toutes les touches du clavier.
Avec ce code source, vous pourrez donc :
-gérer la molette (par exemple dans une scrollbar)
-gérer le click de la molette, le double click droit...etc
-gérer l'éntrée et la sortie de la souris dans vos controles
Evidemment, tout çà SANS COMNSOMMER DE RESSOURCES EN PLUS puisqu'il s'agit de subclassing ;)
Donc aucun timer pour la gestion de l'entrée/sortie de la souris sur un controle.
Merci à EB pour le bout de code ASM dans l'usercontrol qui simplifie l'appel à la wndproc de substitution (car AddressOf dispo que pour des fonctions publiques de module *.bas).
Source / Exemple :
'Utilisation : ajouter mon UserControl (nommé KME1 dans cet exemple) et faire ce code dans le form_load :
'associons KME1 à la scrollbar verticale
With KME1
'récupère le handle du controle dont on veut faire le subclassing
.ControlHwnd = VScroll1.hWnd
'lance la procédure de subclassing
Call .LaunchKeyMouseEvents
End With
Nécessite UN KeyMouseEvents par controle.
Conclusion :
Cette fois c'est du niveau 3 ! Na !
Commentez et notez svp ;)
@+
20 févr. 2011 à 19:34
12 juin 2008 à 16:47
12 juin 2008 à 16:34
Je sais que je suis exigeant mais l'evenement keydown est il fonctionel ou c'est moi qui ne sait pas l'activer?
12 juin 2008 à 14:44
dangereux en mode IDE si on lui enlève la procédure de gestion de messages (Pause de l'IDE, par exemple)
des solutions de replis existent, subclasser via une dll, ou en injectant un peu d'ASM:
http://www.vbfrance.com/codes/MODULE-SUBCLASSER_38442.aspx
12 juin 2008 à 14:38
Cependant en debugage(j'ai mis un taquet sur un evenement mouse_wheel) ca m'a etteint le pc!!! Il ya quelque commentaire inqietant, sur la source j'espere ne pas faire planter les pc des personnes qui vont se servir de mon appli!!
Malgré les craintes si je pouvais mettre un note j'hesiterai entre un 12 ou un 13 sur 10
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.