bonjour ,
Je désire dans mon programme créé un compteur qui s'incrémente lorsque l'utilisateur laisse le doigt appuyer sur le bouton sans le relacher.
Comment puis je effectuer une telle opération.
merci
Version imprimable
bonjour ,
Je désire dans mon programme créé un compteur qui s'incrémente lorsque l'utilisateur laisse le doigt appuyer sur le bouton sans le relacher.
Comment puis je effectuer une telle opération.
merci
Je dirais qu'il faut que tu commences à incrémenter ton compteur quand tu recois l'evenement WM_KEYDOWN et que tu l'arretes dès la reception de l'évenement WM_KEYUP
ou alors, si ton application est MFC, tu peux surcharger la méthode OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
Nico
Salut ,
Dans le class wizard , je remarque qu'il n'y a pas les messages WM_KEYDOWN pour les boutons, il n'y a que les evenement click et double click ,comment puis je faire ?
Ou dois je aller pour surcharger.
merci
Pour une classe héritant de CWnd, tu vas dans le class wizard, tu selectionnes le message WM_KEYDOWN et tu fais "add function".
Sinon, tu as toujours la possibilité de déclarer les messages map à la main.
Tu peux aussi faire une fenetre qui réagit aux evenements avec une fonction WNDPROC.
(si tu utilises les MFC, la premiere possibilité est la + rapide à mettre en oeuvre)
SAlut,
La fonction WM_KEYDOWN est valable que sur la fenetre il faut donc que je connaisse les coordonnées de mon bouton et que je vérifie si la souris est dessus.
Quelle fonction puis je utiliser pour connaitre la position de mon bouton?
merci
Je crois qu'il y a eu une légère incompréhension : tu souhaite incrémenter ton compteur lorsque l'utilisateur laisse son doigt appuyé sur le bouton de la souris et non sur le clavier c'est ça ?
Si c'est celui de la souris, il te suffit en effet de surcharger le message WM_LBUTTONDOWN (bouton gauche de la souris enfoncé) et de regarder dedans en fonction des corrdonnées données en paramètres et du rectangle associé à ton bouton si le clic est bien dedans.
Tu peux faire le truc suivant à peu près et non testé :
Vérifie également si les coordonnées correspondent bien (Screen ou client) et fait en fonction des ClientToScreen ou ScreenToClient pour arriver à tes fins...Code:
1
2
3
4
5
6 CRect rect; GetDlgItem(IDC_TON_BOUTON)->GetWindowRect(CRect &rect); if (rect.PtInRect(point)) { // Démarre ton compteur }
En espérant que ça puisse t'aider
Salut,
j'ai un gros problème , en analysant l'evenement WM_LBUTTONDOWN de la fenetre , je me suis apercu que ca ne fonctionnait que si on était dessus la fenetre et pas dessus un contrôle.
par conséquent , ce qu'on a dit avant ne fonctionne plus.
je voulais savoir si il existait un evenemnt WM_LBUTTONDOWN pour le contrôle bouton car malheureusement je ne le trouve pas et si il existe comment l'obtenir ?
merci
salut,
pour que ton évènement ON_KEY_DOWN marche sur tes contrôles et non ta fenêtre, il faut utiliser une classe pour tes contrôles et implémenter OnKeyDown dans cette classe là, pas dans la classe de ta fenêtre.
Bonne chance