[vb6] molette souris pour datagrid, msflexgrid et mshflexgrid

Soyez le premier à donner votre avis sur cette source.

Vue 23 126 fois - Téléchargée 2 741 fois

Description

Aucune description n'est fournie pour ce projet

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
144
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
28 août 2020
3
Bonjour,
Super source, merci beaucoup.

Par contre j'ai un problème; J'ai réussi à la mettre en place sur une de mes Form, mais pas sur une autre. Je ne sais pas quelle peut être la différence entre mes 2 Form. J'ai bien copié les lignes dans la Déclaration, Initialise, Terminate et ISubclasser_WindowProc en changeant les noms des Form et DataGrid. Mais ça ne fonctionne pas :(

Une idée d'où ça peut venir ?
Merci d'avance
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
à lermite : bien vue et merci ! Je modifierai ma source suivant tes modifs à l'occasion. Concernant ta question, plus d'infos sur msdn :
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260%28v=vs.85%29.aspx
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
1
Ça fonctionne impec aussi en compiler.
J'ai un peu améliorer la sélection, je trouvais dommage de devoir cliquer sur le contrôle pour que le scroll fonctionne.
La constante WM_MOUSEFIRST permet de savoir si la souris survole le contrôle, j'ai donc modifié en ce sens...
Ajouter 3 variables dans la déclaration de la forme

Private mHwnd1 As Long 'mémorise le hwnd des contrôles pour les activés
Private mHwnd2 As Long
Private mHwnd3 As Long

dans la procédure Form_Initialize() j'ai ajouter
mHwnd1 = DataGrid1.hwnd
mHwnd2 = MSFlexGrid1.hwnd
mHwnd3 = MSHFlexGrid1.hwnd
et dans la fonction ISubclasser_WindowProc
Static MMhwnd As Long
If uMsg = WM_MOUSEFIRST Then
If MMhwnd <> hwnd Then
Select Case hwnd
Case mHwnd1: DataGrid1.SetFocus
Case mHwnd2: MSFlexGrid1.SetFocus
Case mHwnd3: MSHFlexGrid1.SetFocus
End Select
MMhwnd = hwnd
End If
Exit Function
End If
De cette façon la roulette agit sur le contrôle survoler. (je trouve plus pratique)
Juste un tit problème, ça fonctionne pas sur le premier contrôle tant que l'ont n'a pas cliquer une fois dessus ? et j'ai pas trouvé pourquoi.
Pour l'erreur des scroll, bien que j'aime pas tellement ça, j'ai mis un On Error Resume Next.
J'ai aussi ajouter 2 constantes dans l'Enum
WM_MOUSEGAUCHEDROIT = &H20E 'Roulette à gauche et droite
WM_MOUSEBUTTONSUPP = &H20B 'Boutons supplémentaires 4 et 5 de la souris
avec deux constantes pour wParam (pas dans l'Enum)
Public Const BUTTONSUPLEFT = &H20 'Valeur de wParam pour différencier les 2 boutons
Public Const BUTTONSUPRIGHT = &H40 'supplémentaires voir WM_MOUSEBUTTONSUPP

Y aurait-il un lien qui donne une explication sur toutes les constantes ?
Leurs utilités et fonctionnement. ?
En tout cas, c'est nickel, merci également à RendField pour la classe.
A+
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
1
Bonjour,
Parfait, enfin presque, il faudrait contrôler les valeurs renvoyées aux scroll, tombe très vite en erreur au déplacement de la molette.
Mais ça je pense que c'est à la portée de tous.
A part ça tu est trop modeste, c’est valable pour tout contrôles ayant un hwnd, y compris la forme.
Egalement utile pour détecter tout les boutons de la souris.
Bravo et merci.
A+
PS: pas encore tester en compiler.
Messages postés
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1
Mise à jour : projet complètement refait.
Tous les commentaires avant 2011 concernent l'ancienne version.
Afficher les 47 commentaires

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.