Detecter la pression d'une touche

ben01n Messages postés 65 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 4 août 2010 - 13 juin 2003 à 11:17
sebby_06200 Messages postés 13 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 3 août 2004 - 30 juil. 2004 à 13:41
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

trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
13 juin 2003 à 12:59
-------------------------------
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-)
>
2
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
13 juin 2003 à 11:34
a tu essayé avec kbhit ?

A+,Hart
0
ben01n Messages postés 65 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 4 août 2010
13 juin 2003 à 14:37
oui j'ai essayé mais comme je dev sous linux : pas de kbhit ni de getch donc je suis dans la .....

8-) Ben01n 8-)
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 juin 2003 à 17:24
Ptet en utilisant GetAsyncKeyState() ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 juin 2003 à 17:33
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>
0
sebby_06200 Messages postés 13 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 3 août 2004
30 juil. 2004 à 13:41
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
0
Rejoignez-nous