OVH Cloud OVH Cloud

[MFC] Gestion des clics : comportement étrange...

3 réponses
Avatar
TigrouMeow
Bonsoir ;)

J'ai réalisé un programme complet, et je viens de m'apercevoir d'un bug bien
étrange.

En fait mon prog est de style Document/View, dans la view on remplir des
cases en cliquant dessus, ou tout en maintenant le bouton de la souris
appuyé (ON_WM_LBUTTONDOWN et ON_WM_MOUSEMOVE où je vérifie que le flags est
bien = MK_LBUTTON).

Mon problème peut surgir dans deux cas. :
- Fichier->ouvrir, je cherche le fichier à ouvrir et double clic dessus. Le
fichier s'ouvre et un autre clic s'effectue sur ma view, qui me remplie
alors une case.
- Lorsque je double clic sur la barre de titre de la view pour la mettre en
plein écran. Pareil, une fois que la view est en plein écran, l'endroit où
j'avais double clické est noirci !

Seule solution que j'ai trouvé pour éviter ce problème : dans mon
OnMouseMove, au lieu de ne spécifier que nFlags == MK_LBUTTON pour effectuer
un clic, je fais nFlags == MK_LBUTTON + MK_SHIFT.

C'est un peu embétant, maintenant je suis obligé d'appuyer sur shift pour
peindre à l'aide de la souris ! Il doit bien y avoir un autre moyen... je
vous remercie de votre aide :)

--
Meow ;o)

3 réponses

Avatar
Vincent Burel
"TigrouMeow" wrote in message
news:41f6c575$0$26220$
Bonsoir ;)

J'ai réalisé un programme complet, et je viens de m'apercevoir d'un bug


bien
étrange.

En fait mon prog est de style Document/View, dans la view on remplir des
cases en cliquant dessus, ou tout en maintenant le bouton de la souris
appuyé (ON_WM_LBUTTONDOWN et ON_WM_MOUSEMOVE où je vérifie que le flags


est
bien = MK_LBUTTON).



sous windows, vous pouvez recevoir des événements souris non complet, un
clic arrive dans une windows, un mousemove dans un autre et le mouseup dans
une troisième. vous devez gérer cette cohérence là :

dans ON_WM_MOUSEMOVE , vérifiez que le ON_WM_LBUTTONDOWN à bien eu lieu
(dans votre fenêtre). dans ON_WM_LBUTTONUP vérifiez le aussi.

VB
Avatar
Patrick Philippot
TigrouMeow wrote:
Mon problème peut surgir dans deux cas. :
- Fichier->ouvrir, je cherche le fichier à ouvrir et double clic
dessus. Le fichier s'ouvre et un autre clic s'effectue sur ma view,
qui me remplie alors une case.
- Lorsque je double clic sur la barre de titre de la view pour la
mettre en plein écran. Pareil, une fois que la view est en plein
écran, l'endroit où j'avais double clické est noirci !



Bonjour,

Tout se passe comme si les double-clics passés à la boîte de dialogue ou
à la barre de titre n'étaient pas sortis de la file d'attente des
messages (pas consommés). Vous n'avez rien fait de particulier au niveau
du traitement des messages en général?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
Est-ce que cela vous dérangerait de m'envoyer le code de ce projet? Je
ne vois aucun rapport sur les MFC concernant un problème similaire. Donc
soit il y a un problème dans votre code, soit il y a un utilitaire
quelconque installé dans votre système qui perturbe l'acheminement des
messages souris.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr