Re: Probleme avec mon switch
Citation:
Envoyé par Fredovsky
Voila un petit programme qui change une valeure si l'on appuis sur la touche haut ou bas du clavier.
Sous DOS, les touches étendues renvoient "0 <code>"
Sous Windows, les touches étendues renvoient "0 (ou 224) <code>"
L'algo de saisie est donc
Code:
1 2 3 4 5 6 7 8
|
car := getch()
IF (c = 0 OR c = 224)
IF kbhit()
code := getch()
traitement (code)
ENDIF
ENDIF |
Ceci fonctionne sous Windows XP avec le devpak conio de Dev-C++/Code::Blocks.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#include<stdio.h>
#include<conio.h>
int main(void)
{
int touche = 0, valeur = 0;
printf("Valeur = %d\n", valeur);
while (touche != 27)
{
touche = getch();
if (touche == 224)
{
if (kbhit())
{
touche = getch();
switch (touche)
{
case 72 :
valeur++;
break;
case 80 :
valeur--;
break;
}
printf("Valeur = %d\n", valeur);
}
}
}
return 0;
} |
En fait, sous WIndows XP, les touches étendues peuvent retourner 0 ou 224. Pour savoir ce qui ce passe exactement, je conseille ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
#include<stdio.h>
#include<conio.h>
int main(void)
{
int touche = 0;
while (touche != 27)
{
touche = getch();
printf("Touche = %d\n", touche);
if (touche == 0 || touche == 224)
{
if (kbhit())
{
touche = getch();
printf("Extension = %d\n", touche);
}
}
}
return 0;
} |