Kbhit en C++

Signaler
Messages postés
15
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
8 juin 2007
-
Messages postés
15
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
8 juin 2007
-
Bonjour @ tous !



Je cherchais à faire un getche() non bloquant, quand j'ai trouvé
kbhit(). Mais voila : cette fonction n'était pas reconnue par mon
compilateur (DevC++ 4). Après 10 minutes de tests en tous genres, je
m'apperçois que cette fonction ne marche qu'en C et non en C++ ...



D'où ma question, est-il
possible d'utiliser kbhit() en C++, dois-je faire un fichier .c que
j'inclus, ou même refaire tout mon programme en C ?



Sinon, quelqu'un connait-il un autre moyen de faire un getche() non bloquant ?



Voici mon code :


<hr style="width: 100%; height: 2px;">#include <stdio.h>

#include <stdlib.h>

#include <conio.h>



int main()

{

char carac;

while(1)

{

if( kbhit() ) // On ne fait un getche() que si ya quelque chose

{

carac=getche();

printf("\rVous avez appuie sur "%c"\n",carac);

}

}

return 0;

}



<hr style="width: 100%; height: 2px;">

------------------------------------------------






remram44, quelque part devant un ecran.

4 réponses

Messages postés
121
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
27 juillet 2006

C'est bizarre, moi la fonction kbhit() fonctionne très bien même en C++.
Voici un exemple que je viens de tester pour en être sûr :


#include
#include <conio.h>


// il y a une classe, c'est bien du C++
class truc
{
public:
int bidule;
truc()
{
cout << "Un nouveau truc est crée" << endl;
}
};


int main()
{
truc * t;
t = new truc;
t->bidule = 9;
do
{
if (kbhit())
if (getch() == 27)
// s'arrête lorsque l'on appuie sur la touche échap
return 0;
}
while(1);
}


Mais c'est bien en mode console que tu testais kbhit en C++ ?
Car peut-être (je n'en suis pas sûr) qu'on ne peut l'utiliser qu'en mode console.
Messages postés
15
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
8 juin 2007

Oui, c'était bien en mode console que je suis (d'où le getche()). Tu utilises quel compilateur ?

------------------------------------------------

remram44, quelque part devant un ecran.
Messages postés
121
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
27 juillet 2006

J'utilise Borland C++.
Messages postés
15
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
8 juin 2007

Une autre question : pendant qu'un thread utilise la console, par
exemple en faisant un getche(), qu'en est t-il des autres thread ?
Peuvent-ils faire un cout sans "déranger" le getche() ?

------------------------------------------------

remram44, quelque part devant un ecran.