[C++] Implementacja klawisza Delete i Backspace
Ostatnio zmodyfikowano 2014-11-10 13:30
Malina94 Temat założony przez niniejszego użytkownika |
[C++] Implementacja klawisza Delete i Backspace » 2014-11-09 20:34:19 Chciałabym zrobić coś takiego, że gdy nacisnę klawisz Delete lub Backspace wywołam ukryte pod nimi funkcje usuwające znaki. Niestety nie wiem jak to poprawnie zrobić. Sam if/switch wyłapujący kod ascii nie działa. W jaki sposób można to zaimplementować? |
|
1aam2am1 |
» 2014-11-09 20:55:22 switch/if powinien zadziałać ale wszystko zależy od tego jak się wyłapuje znaki. Poczytaj o getch(); |
|
Malina94 Temat założony przez niniejszego użytkownika |
» 2014-11-09 22:26:35 Okej, na próbę zrobiłam takie proste coś: #include <iostream> #include <conio.h>
using namespace std;
int main() { int znak; while( 1 ) { znak = getch(); if( znak == 127 ) { cout << "DELETE" << endl; } else if( znak == 8 ) { cout << "BACKSPACE" << endl; } } return 0; }
Backspace działa, natomiast delete nie. Dlaczego? |
|
DejaVu |
» 2014-11-09 23:40:38 |
|
1aam2am1 |
» 2014-11-09 23:41:01 http://www.asciitable.com/index/asciifull.gif |
|
DejaVu |
» 2014-11-10 01:14:35 |
|
1aam2am1 |
» 2014-11-10 01:23:09 Offtop |
|
DejaVu |
» 2014-11-10 01:27:31 (...) po drugie to znak nr 27 nie 127.
|
Ekhm... #include <iostream> #include <conio.h> int main() { unsigned char znak; std::cout << "klawisz [ESC] wychodzi z programu." << std::endl; do { znak = getch(); std::cout << "znak: '" << znak << "' kod: " << static_cast < int >( znak ) << std::endl; while( kbhit() ) { znak = getch(); std::cout << "*znak: '" << znak << "' kod: " << static_cast < int >( znak ) << std::endl; } std::cout << std::endl; } while( znak != 27 ); return( 0 ); }
klawisz [ESC] wychodzi z programu. znak: 'Ó' kod: 224 *znak: 'S' kod: 83
Olej mała pomyłka z mojej strony. Pamięć zawodzi ma juz się te swoje lata. Mozna czegoś zapomnieć.
|
No to po co pisać posty, które propagują 100% błędnej informacji? Delete składa się z dwóch znaków. Pierwszy 224, a drugi 83. |
|
« 1 » 2 |