Detecter la pression d'une touche

Signaler
Messages postés
65
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
4 août 2010
-
Messages postés
13
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
3 août 2004
-
salut toutle monde
j'ai un prog qui effectue une boucle infinie avec des instructions à l'interieur
mon problème est que je voudrais pouvoir appuyer sur une touche pour en sortir et aller vers un autre endroit de mon programme
mais si il n'y a pas de touche de préssée la boucledoit continuer
je recherche la solution pour 2 cas :
sortir de la boucle si une touche quelconque est préssée
et sortir de la boucle si une touche en particulier est préssé
je ne sais pas comment faire donc si qq'un pouvait m'aider !!

merci d'avance

8-) Ben01n 8-)

6 réponses

Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
1
-------------------------------
Réponse au message :
khbit() détecte simplement la pression d'une touche mais ne dit pas laquelle. Or dans son programme il doit le savoir.

Le C++ ANSI/ISO ne propose aucun fonction pour détecter une touche.

Pour cela deux solutions. Soit tu utilises les interruptions en asm ou tu utilises une bibliothèque (sdl, allegro, clanlib etc..)
-------------------------------

> a tu essayé avec kbhit ?
>
> A+,Hart
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > salut toutle monde
> > j'ai un prog qui effectue une boucle infinie avec des instructions à l'interieur
> > mon problème est que je voudrais pouvoir appuyer sur une touche pour en sortir et aller vers un autre endroit de mon programme
> > mais si il n'y a pas de touche de préssée la boucledoit continuer
> > je recherche la solution pour 2 cas :
> > sortir de la boucle si une touche quelconque est préssée
> > et sortir de la boucle si une touche en particulier est préssé
> > je ne sais pas comment faire donc si qq'un pouvait m'aider !!
> >
> > merci d'avance
> >
> > 8-) Ben01n 8-)
>
Messages postés
260
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 août 2008

a tu essayé avec kbhit ?

A+,Hart
Messages postés
65
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
4 août 2010

oui j'ai essayé mais comme je dev sous linux : pas de kbhit ni de getch donc je suis dans la .....

8-) Ben01n 8-)
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Ptet en utilisant GetAsyncKeyState() ?
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Si tu veux sortir de ta boucle en apuiyant sur la touche echap, par exemple:

if(GetAsyncKeyState(VK_ESCAPE)==-32768) {break; }

l'argument passé a la fonction GetAsyncKeyState est un virtual key code.
Et n'oublie pas include <windows.h>
Messages postés
13
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
3 août 2004

bonjour
moi je cherche untruc dans le genre mais un peu plus chaud et j arrive pas a trouver
en fait, je voudrais que la boucle se termine quand quelque chose est lue par l intermediaire d un handle, comme pour un fichier
mais ca marche pas, j ai l impression que la boucle ne se fait qu une seule fois:

do
{

WriteCOM(buffer2, &nBytesWritten);
Sleep(10);

if(GetAsyncKeyState(VK_ESCAPE)==-32768) {break; }
/*permet de sortir de la boucle en appuyant sur ECHAP*/

}while(!kbhit()); /* Il faudrait que des qu'on recoit un signal on arrete la boucle*/

bon pour l instant j ai utilisé ca pour pouvoir terminer la boucle a la main

BOOL ReadCOM(void* buffer, int* pBytesRead)
{
return ReadFile(g_hCOM, buffer, 1, (LPDWORD)pBytesRead, NULL);
}

BOOL WriteCOM(void* buffer, int* pBytesWritten)
{
/* écriture sur le port */
return WriteFile(g_hCOM, buffer, 1, (LPDWORD)pBytesWritten, NULL);
}

voila ca serait super si quelqu un pouvait m aider parce que la je sais plus quoi faire
merci beaucoup