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

C Discussion :

prise d'apui sur une touche


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut prise d'apui sur une touche
    Je voudrais pouvoir capter et enregistrer lapuis sur une touche sans faire un getch() ou un scanf() ie ne pas mettre en "pause" mon programme.
    Merci

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Sous Windows?

  3. #3
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut re :
    Citation Envoyé par seriousme
    Sous Windows?
    Sous windows oui en C dans une console apps pas dans une win apps

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    ton attente cpnsole est forément bloquante, la solution c'est de faire du multi thread. mais la je peux pas t en dire plus

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Le mieux reste sûrement les fonctions de l'API windows mais si c'est une application console...

    Sinon avec kbhit:
    http://opecheux.free.fr/abcp/refc/kbhit.html

  6. #6
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par seriousme
    Le mieux reste sûrement les fonctions de l'API windows mais si c'est une application console...

    Sinon avec kbhit:
    http://opecheux.free.fr/abcp/refc/kbhit.html
    Merci mais Pour utiliser Kbhit il faut pc.h seul problemme lorsque je compile avec Devc++ il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pc.h: No such file or directory.

  7. #7
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Salut,

    Avec la fonction kbhit() qui retourne un entier non nul si un code de touche est présent dans le buffer clavier. Ensuite, il suffit de lire ce code avec getch().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    { int touche = 0 ;
     
      do
        {
          if(kbhit())  // Si une touche présente dans le buffer clavier...
            {
              // ...lire la touche
              touche = getch() ;
              printf("'%c' (%.2Xh)\n", touche, touche) ;
            }
        }
      while(touche!=0x1B) ; // Tant que touche <> de ESCAPE
     
      return 0 ;
    }
    Je précise que le programme N'EST PAS bloquant, puisque la fonction getch() n'attend pas la touche, puisqu'elle est déja dans le buffer clavier ;-)

    En esperant avoir été clair, voila...

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

Discussions similaires

  1. Changer de texture en appuyant sur une touche
    Par Hyoga dans le forum OpenGL
    Réponses: 1
    Dernier message: 29/01/2005, 23h36
  2. Réponses: 15
    Dernier message: 28/01/2005, 04h46
  3. Réponses: 3
    Dernier message: 24/01/2005, 11h57
  4. 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
  5. Appui prolongé sur une touche.
    Par semenzato dans le forum MFC
    Réponses: 7
    Dernier message: 16/01/2004, 12h47

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