Gerez les evenements mouse_wheel, mouse_enter, dbl_click, mouse_leave .... etc pour tous vos controles en 2 lignes de code

Soyez le premier à donner votre avis sur cette source.

Vue 7 782 fois - Téléchargée 1 236 fois

Description

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 ;)

@+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

JJDai
Messages postés
291
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
13 mars 2015
-
Excellent
andalo
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012
-
Désolé ca fonctionee bien egalement, mon souci provient du fait que je veux savoir si l'utilisateur appui sur les fleches gauches, droite, haut, ou bas et que mon controle perd le focus du coup.
andalo
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012
-
hey mais je peux noter!
Je sais que je suis exigeant mais l'evenement keydown est il fonctionel ou c'est moi qui ne sait pas l'activer?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
pas de danger avec le subclassing en mode compilé.
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
andalo
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012
-
Ah ben bravo, je n'ai pas le niveau (ni le courage et le temps) pour tout piger à cette source, mais je me regale à scroller tout ce que je peux scroller, un bonheur!!
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.