IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Appui prolongé sur une touche.


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut Appui prolongé sur une touche.
    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

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    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

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    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)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2003
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    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é :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CRect rect;
    GetDlgItem(IDC_TON_BOUTON)->GetWindowRect(CRect &rect);
    if (rect.PtInRect(point))
    {
       // Démarre ton compteur
    }
    Vérifie également si les coordonnées correspondent bien (Screen ou client) et fait en fonction des ClientToScreen ou ScreenToClient pour arriver à tes fins...

    En espérant que ça puisse t'aider

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    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

  8. #8
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appui prolongé sur la touche Entrée
    Par Jasonvnm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/08/2013, 08h10
  2. Gérer l'appui continu sur une touche
    Par Greensource dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/10/2008, 10h45
  3. Appui virtuel sur une touche du clavier
    Par nitneuk dans le forum Windows
    Réponses: 2
    Dernier message: 07/04/2006, 13h56
  4. Réponses: 3
    Dernier message: 24/01/2005, 11h57
  5. Simuler l'appui sur une touche, au niveau système
    Par debutant java dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 13/08/2004, 12h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo