VK_'s funzen net! Help!
-
Hi!
Also, ich hab das schon mal im WinAPI Forum gepostet und da hat man mir gesagt, dass ich mal hiernachfragen soll.Also bitte NICHT verschieben.
Also, ich habe folgendes Problem:
Ich kann die VK's nur begrenzt nutzen. VK_UP, VK_F1 oder VK_RSHIFT z.B. funzen
nicht. Ich hab mal folgendes Programm gemacht:#include <stdio.h> #include <windows.h> #include <conio.h> void main(){ char ch; do{ ch=_getch(); }while(ch!=VK_DELETE); printf("Hallo!"); }
Demnach sollte durch drücken von Entf "Hallo!" geschrieben werden. Nur geht das nicht...
Aber ich hab mich dann mal in der winuser.h umgeguckt(in der sin die VK's definiert) und da stand:
#define VK_DELETE 0x2E
Und 2E ist ja 46 in dezimaler Schreibweise.Und 46 ist wieder der ASCII Code für '.'! Als ich dann in dem o.g. Programm . drückte und net Entf dann wurd "Hallo!" geschrieben.
Was heißt, dass mein Compiler(MVC++ 6.0) bzw. mein Programm irgendwie immer die normalen ASCII Codes benutzt.Hoffe mal ich konnt das Problem einigermaßen erklären. Hoff mal, dass mir einer helfen kann. Wär auch ganz net wenn das mal ein paar von euch ausprobieren würden (eventuell im gleichen Compiler) um zu gucken, ob dass vielleicht auch nur an meinen Compilereinstelluungen oder so liegt.
Thx im Voraus!
-
Schau mal in die Konsolen-FAQ. Da gibts einen Beitrag namens "Einlesen von Sondertasten" oder so ähnlich. Dort wird das Rätsel gelüftet ;).
MfG SideWinder
-
Das hab ich auch schon gelesen und im MSDn is auch so was ähnliches gestanden.
Aber jetz hab ich nach wie vor ein problem:
Wie soll ich das mit der 0 bzw 0xE0 machen. Bzw. wie kann ich 2. Zeichen auslesen wenn _getch() nur das erste also die 0 zurückgibt?
Weil 2x _getch() geht ja auch net...Könntest du vielleicht nen kleinen Quellcode posten, dass ich mal ein kleines Bsp. hab?
Thx aber schonma für deine Antwort!
[ Dieser Beitrag wurde am 23.06.2003 um 21:04 Uhr von W@lly editiert. ]
-
int main(){ unsigned char chr; do { chr=getch(); printf("%i",chr); if ((chr==224) || (chr==0)) { chr=getch(); printf("%i",chr); switch(chr) { case 13: printf("go"); break; case 75: printf("<-"); break; case 77: printf("->"); break; case 83: printf("ENTF"); break; case 82: printf("EINF"); break; case 80: printf("pfeil nach unten"); break; case 79: printf("ENDE"); break; case 72: printf("pfeil nach oben"); break; } } }while(true); return 0; }
-
schreibst du immer so spagetticode?
-
ja klar, wenn mir danach ist, liebe ich spagettis
-
@ elise: Danke für deinen Spaghetticode!
Hast mir eicht geholfen!
Mal so nebenbei ne Frage: Wie schreibt man eigentlich Spaghetti?
-
Nach der neuen Rechtschreibung am einfachsten so: Spagetti
-
Das war kein Spagetticode.
-
Aber auch kein schöner Code. :p
-
Wieso nicht? Wie würdest du's besser machen? (vom Einrücken mal abgesehen)
-
Bashar muss mal wieder elise verteidigen.
-
nö.. elise hat immer ihre brüder verteidigen müssen früher, und hat nen knallharten schlag am leibe