kobee12
Messages postés153Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention31 octobre 2006
-
24 mars 2005 à 15:05
kobee12
Messages postés153Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention31 octobre 2006
-
24 mars 2005 à 17:38
Bonjour à tous,
j'ai un ch'tit programme avec une fonction de saisie. J'utilise la fonction getch() pour récupérer chaque caractère que l'on tape.
J'utilise les flêches également, les codes ASCII sont :
#define UP 72
#define LEFT 75
#define RIGHT 77
#define DOWN 80
Seulement, quand j'appuie sur une des flêches, il m'affiche -32 suivi du code ASCII de la flêche et pas seulement le code ASCII, par ex. pour la flêche gauche -3275 au lieu de 75 tout simplement.
Voici la boucle dans laquelle je fais mon switch :
do
{
chaine = new char[taille];
if(tmp!=NULL) {
for(int i = 0;i < taille; i++) {
chaine[i] = tmp[i];
}
}
car = getch();
cout << (int)car;
switch(car) {
case ENTER :
chaine[taille-1] = '\0';
return chaine;
case LEFT :
if( x > 0 ) {
x--;
taille--;
Position.X = x;
Position.Y = y;
SetConsoleCursorPosition(hOut, Position);
}
break;
case RIGHT :
if( x < (strlen(chaine)+1) ) {
x++;
taille++;
Position.X = x;
Position.Y = y;
SetConsoleCursorPosition(hOut, Position);
}
break;
case UP :
break;
case DOWN :
break;
case DEL :
cout << "!DEL!" <<endl;
break;
case BCKSPC:
if(taille>1) {
taille--;
tmp = new char[taille];
for( int i = 0;i<taille;i++) {
tmp[i] = chaine[i];
}
}
else if (taille == 1) {
taille = 1;
chaine = NULL;
tmp = NULL;
}
x--;
Position.X = x;
Position.Y = y;
SetConsoleCursorPosition(hOut, Position);
cout << " ";
SetConsoleCursorPosition(hOut, Position);
break;
default :
chaine[taille-1] = car;
//cout << chaine[taille-1];
J'avais déjà fais un prgm dans le même genre avec Dev-cpp 4 et ça fonctionnait correctement.
Là j'utilise wxDev-cpp 4.9.9.2 après MAJ.
Quelqu'un serait pourquoi il me saisie deux caractères et non un seul
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 24 mars 2005 à 15:54
Salut,
Les flèches n'ont pas de codes ASCII (Pareil pour F1-F12, PAGE DOWN,
PAGE UP, HOME, END, INSERT et DEL). Les codes ASCII 72, 75, 77 et 80
correspondent respectivement aux lettres majuscules H, K, M, et
P. Si getch() te retourne un code différent je crois que c'est
une bonne chose car cela te permet de différencier les flèches des
lettres citées. Avec d'autres versions de getch(), comme celle de
Visual C 6, on est obligé d'appeler getch() de nouveau quand le code
retourné est 0 ou 224 pour récupérer le code de la touche (non ASCII)
comme les flèches ou les touches de fonctions etc... comme dans ce code
source:
Avec ta version de getch(), tu n'as pas besoin de tout cela puisque le
code retouné te permet d'être sûr qu'il s'agit bien d'une flèche et non
d'une lettre. Il te suffit donc de l'exploiter dans ton programme.