"evenements" onmouseout et onmouseover pour un controle

Soyez le premier à donner votre avis sur cette source.

Vue 6 045 fois - Téléchargée 471 fois

Description

But de la source, simuler ces deux événements pour un seul et unique controle qui possède un handle. :'(

Comment ça marche :

- Faut toujours laisser le module et le module de classe ensemble.
- Faut jamais accéder aux méthodes du module !!
- Faut créer sur le form courrant deux procédures publiques : Composant_OnMouseOut() et Composant_OnMouseOver() puis mettre le code désiré dedans.
- Suffit de manipuler le module de classe pour déclencher ces événements.

Dans cette source vous trouverez d'intéressant :

- Des API : GetWindowRect, GetCursorPos, SetTimer, KillTimer, GetDlgItem.
- Un parcours de collection (For Each) pour déterminer si un composant possède un handle ou pas.
- Le code qui permet de "simuler" OnMouseOut et OnMouseOver pour un objet.

Pour les débutants :
- Ne vous inspirer pas de la structuration du code, notament au niveau du module de classe et du module !
- Si ce code est trop compliqué, suffit juste de copier le code du module et de l'ajouter à celui de la form, mettre un timer (avec qq modifs) et ça fera la meme chose...

Source / Exemple :


' In the zip

Conclusion :


En fait, j'arrive pas à utiliser SetTimer hors d'un module à cause de l'instruction : AddressOf. Visiblement AddressOf et la procédure qu'il pointe ne sont utilisables que dans un module... :'''(
Sans quoi, yaurait qu'un unique module de classe avec la possibilité de l'instancier plusieurs fois pour plusieurs composants...
Si quelqu'un a une solution...

Bon..., on est d'accord, cette source n'a d'intérêt que l'aspect pédagogique de la chose... Donc pour des remarques à deux balles, passer votre chemin.

Bon coding à tous :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
9
Date d'inscription
jeudi 19 août 2004
Statut
Membre
Dernière intervention
21 juillet 2005

salut j'ai lu ke tu avais une version de bataille navale contre l'ordinateur
je pense ke ça peut interressé du monde, si tu pouvais poster ton prog ce serait cool
d'avance merci
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
122
GetCapture, SetCapture et ReleaseCapture sont des fonctions qui permettent de capturer les événements souris sur un handle bien particulier, ce qui permet de savoir ce que fait la souris, par contre, ca bloque les événements souris sur tout les autres contrôles !

DarK Sidious
Messages postés
57
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2004

Hum... ça a l'air carrément mieux ton code :)

PtInRect.... celle là elle est utile...

En ce qui concerne les api GetCapture, SetCapture et ReleaseCapture, peux-tu me faire un petit topo stp, g pas bien compris à quoi elles servaient ?

Merci
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Gros Problème sous NT4 en tous cas. J'ai lu ton code cependant. Je pense que tu peux l'amélirorer (notemment pour savoir si un point est dans un rectangle).

Excuse-moi de me citer mais j'ai posté un source d'un controle qui possède l'évènement MouseLeave et MouseEnter. Je pense qu'il y a deux ou trois API qui peuvent te servir.

http://www.vbfrance.com/code.aspx?ID=18965

++

Moustachu
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010

Il y a des moyens plus simples (mais certes beaucoup plus artisanaux) de rendre cet effet... Je m'explique : on créé une variable qui va indiquer où se trouve la souris, et à chaque fois qu'il y a un évènement MouseMove sur un objet, on sait que la souris est sur celui-ci, donc on place dans la variable une valeur correspondant à cet objet.
Mais bon voilà...
Saros
Afficher les 6 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.