Bon alors je vous vois venir en disant que ça existe déjà.
Et bien oui, EBArtSoft et Metalcoder (pour SDI) en ont déjà fait un.
Ils sont d'ailleurs disponibles ici:
http://www.vbfrance.com/code.aspx?ID=21802
http://www.vbfrance.com/codes/UTILISER-ROULETTE-DANS-VB6-IDE-ADDIN-V2_27453.aspx
J'étais content de trouver enfin un moyen de faire fonctionner la roulette de ma souris dans VB!!!
Mais je suis dans un environnement de développement SDI donc je télécharge la version 2 (celle de Metalcoder) censée fonctionner avec ma configuration...
Et en fait, ça ne marche pas vraiment bien. J'arrive à faire défiler une fois sur cinq en enlevant et redonnant le focus à ma fenêtre. Bref, c'etait pas vraiment ça...
Je me suis donc attelé à la tâche car pouvoir profiter d'une telle fonction dans VB et voir que chez les autres ça marche et pas chez moi, et ben ça c'est pas cool...
Je ne mets évidemment pas ce code pour plagier les deux sources citées ci-dessus. Je vous propose juste quelque chose qui fonctionne. Libre à vous de choisir votre version.
Je précise quand même que ça fonctionne dans les deux environnements (SDI ou pas) et ça gère aussi le mode double fenêtre (voir capture). Une petite option sympa est que lorsque l'on appuie sur Ctrl gauche et que l'on défile, ça navigue de procédures en procédures.
Côté technique, ça installe un Hook bas niveau sur la molette de la souris (je l'ai traduit d'un code C++). Lors d'un wheel, on regarde si la fenêtre qui a le focus et une fenêtre de code VB. Si oui, en fonction de la position de la souris on défile la ScrollBar correspondante.
Pour le nombre de lignes à défiler et choisir d'activer ou pas cet AddIn, cliquez sur le menu Compléments puis Paramètrer la roulette. Ici vous choisissez de défiler de 1 à 20 lignes. Les changements prennent effet immédiatement.
Le projet se compose de l'AddIn et d'un projet normal. En fait l'AddIn se contente juste de lancer le prog externe qui gère la molette. J'ai fait ça car sinon, il y avait un temps de latence à la fermeture des fenêtres. Ainsi le hook est géré dans un processus à part. Déjà ça évite à VB de planter en même temps que le prog si plantage il y a. Et le prog détecte si VB est toujours lancé sinon il quitte, tout simplement...
Donc laissez bien la DLL et le .EXE dans le même répertoire.
J'ai testé en ouvrant pleins de fenêtres de projet différentes et je n'ai pas eu de bug...
------------------
Dans le dossier "Projet", j'ai mis un exemple de défilement sur un MsFlexGrid suite à une question posée plus bas dans un des commentaires...
Et tant que j'y étais j'ai mis un autre exemple avec le composant ScrollBar de VB...