cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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 ...
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 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.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 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é !
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 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...
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 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
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 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.