Désactiver un évenement

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 8 juil. 2010 à 18:32
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 13 juil. 2010 à 00:39
Bonsoir à tous

Comment peut on désactiver l'évenement par ex
mousemove d'un picturebox et ensuite repermettre
l'évenement
Merci

14 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 juil. 2010 à 19:14
Salut
Suffit de sauter les lignes.

Dans la partie déclaration de ton code, tu ajoutes cette déclaration :
    Public bSaute As Boolean = True

Et dans ta Sub, tu n'as qu'à encadrer ton code avec ce If :
    If Not bSaute Then
        ' Ici, le code normal
    End If

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 juil. 2010 à 23:34
Salut

J'ai compris mais ça ne marche pas comme je veux.
Je me suis mal exprimé
C'est plutot comment empecher le mouvement du curseur à l'interieur d'un picturebox
merci
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 juil. 2010 à 09:33
"empecher le mouvement du curseur" ?
Et comment tu vas en sortir ?
Pas clair.
Mets la propriété Cursor à No pour afficher le panneau, mais empécher le curseur (= souris) de bouger, je ne vois pas trop.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
9 juil. 2010 à 15:14
Bonjour

Voila mon problème
j'ai un picturebox et un timer.A l'évenement tick
du timer je déplace le curseur avec
Cursor.Position = New Point..
ainsi je veux montrer la 'solution' de façon visuelle
mais la le problème d'empecher la souris jusqu'à
que le timer.enable = false
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
9 juil. 2010 à 15:25
En fin de compte je pense qu'il n'y a pas de solution ou de ne pas se servir du curseur
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 juil. 2010 à 19:24
Donc, dans ton programme, tu veux déplacer la souris ?
As-tu rechercher "émulation souris" ou "déplacer souris" parmi les codes du site ?
Quant à désactiver la souris, c'est surement possible, mais je ne te le recommande pas, c'est source de problème si ton programme plante ...
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
12 juil. 2010 à 11:49
Bonjour,

Ne pourrais-tu pas mettre un curseur perso invisible le temps du timer et le rendre visible après.
Avant le timer : Me.MousePointer = vbCustom
Après : Me.MousePointer = vbDefault

Pour être sur de retrouver le curseur à l'emplacement exact (si il a été bougé pendant sa "période invisble") tu mémorises ses coordonnées avant le déclenchement tu timer et tu les restitues quand le curseur devient visible.

Voir API GetCursorPos et SetCursorPos

Bonne prog,

Cheyenne
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
12 juil. 2010 à 12:00
Re,

Je te proposais cette solution mais tu peux faire plus simple avec l'API ShowCursor

ShowCursor False
ShowCursor True

Cheyenne
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 juil. 2010 à 14:02
Salut Cheyenne

Le problème est plus complexe
Le timer peut durer 1 à 2 minutes.
Pendant le timer le curseur est bien visible
sauf que je le déplace automatiquement sans bouger la souris mais la le problème c'est qu'on
peut toujours intervenir et bouger le curseur avec la souris
solution
1 écrire un message "ne touchez pas à la souris"
2 empecher les évenements avec la souris...
j'ai vu qu'on peut le faire avec globlal hook

merci de ton aide et bonne prog
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
12 juil. 2010 à 17:24
Bonjour ShayW,

Dans ce cas pourquoi ne pas figer le curseur à une position donnée pendant le laps de temps déterminé par le Timer.

Par exemple:
en déclaration Dim bBouge as Boolean
puis avant Timer.Enabled = True tu passes bBouge à False

Si la souris bouge pendant le temps du Timer le mouvement est intercepté par l'événement MouseMove, donc dans le code de MouseMove tu mets
if bBouge = False then SetCursorPos x,y
ainsi le curseur est forcé à une position donnée.

Dans le code du Timer tu mets bBouge = True et le tour est joué !

Est-ce que cela correspond à tes besoins ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 juil. 2010 à 18:29
Salut

Quand je déplace le curseur avec
Cursor.Position = New Point..
il n'est pas intercepté par l'évenement mousemove
donc je peux bouger la souris comme je veux
et en plus on ne peut pas annuler un évenement
en fin ce n'est pas pressé
merci
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
12 juil. 2010 à 19:27
Re,

J'ai lu un peu trop vite !
En fait tu codes en .Net et non en VB6.
Mais le principe reste le même. Effectivement si tu bouges le curseur par le code il n'y a pas interception de l'événement.
Mais si l'utilisateur bouge la souris l'événement est forcément présent dans Form_MouseMove (du moins en VB6) et c'est à ce moment là qu'il faut agir.

Une idée comme une autre : masquer le curseur et mettre une image de curseur (ou une flèche) en face de la solution puis de la rendre invisible quand le Timer te rends la main...

Bonne soirée,
Cheyenne
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 juil. 2010 à 22:48
Bonsoir
Quand l'évenement mousemove se produit ?
quand j'ai bougé la souris alors le windows
detecte event mousemove et ainsi pour tous les
autres évenements
Tu comprends tant que je n'ai pas bougé la souris
il n'y a pas d'évenement mouse_move
seulement dès que je bouge mais c'est trop tard.

à propos de masquer le curseur et mettre une image curseur...
ou la mettre ?
une image curseur .cur ou .ani tu peux seulement
mettre dans un curseur

il y a peut etre une solution c'est le global hook
http://www.leunen.com/cbuilder/hook.html

merci
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
13 juil. 2010 à 00:39
Bonsoir ou Bonjour,

...seulement dès que je bouge mais c'est trop tard.
Ben non, tu interceptes l'événement et tu replace la souris là où elle était par SetcursorPos.

...à propos de masquer le curseur et mettre une image curseur...
ou la mettre ?

Quand je disais une image de curseur, je ne voulais pas parler à proprement dit du format .cur ou .ani mais plutôt d'une image gif, jpeg ou bmp ou bien d'une icône que tu placerais dans un contrôle Picture ou Image à côté de la solution.

Mon idée était celle-ci :
1) Avant de démarrer le Timer tu caches le curseur par ShowCursor False, que tu remplaces à la position voulue par une icône ou image (dessin de curseur ou flèche).
Ainsi, même si l'utilisateur bouge la souris, le curseur ne sera pas visible et son "clone" (l'image) restera en face de la solution.
2) Puis à la fin du temps tu caches cette image et tu fais réaparaitre le curseur par ShowCursor True.

Me suis-je mieux fait comprendre ?

Cheyenne
0
Rejoignez-nous