maly problem z oblsuga klawy
Ostatnio zmodyfikowano 2009-01-20 10:41
wujas Temat założony przez niniejszego użytkownika |
maly problem z oblsuga klawy » 2009-01-18 01:33:14 Cześć Słuchajcie mam pewien problem mianowicie chciałbym napisać program coś ala hurtu takich jak wykorzystywane są w magazynach i sklepach .Taki program służy do gromadzenia informacji na temat produktów ,ich ilości ,ceny i takich pierdołek coś jak bardziej rozbudowana ksiażka telefonicza :] Jednak mam poważny problem mianowicie nie potrafie sobie poradzić z obsługa klawiatury tzw niżej wklejam kod o co nie wiecej mi chodzi.Chcialbym aby to dzialalo tak ze jak się załaduje strona1 to w każdej chwili moge nacisnąc klawisz INSERT i wskoczy mi strona2 i odwrotnie jednak program czeka az wpisze jakas zmienna ,musze zaakceptowac i wtedy dopiero dziala klawisz INSERT Wiem moze to glupie ale poczatki programowania nie sa latwe a warto sie pytac :) #include<iostream> #include<conio.h> #include "console.ddt" using namespace ddt::console; using namespace std; void strona1() { clrscr(); cout << "test"; int a; cout << "Strona nr 1" << endl; cout << "Wpisz cos na test : "; cin >> a; cout << a; return; } void strona2() { clrscr(); int b; cout << "Strona nr 2" << endl; cout << "Wpisz cos na test : "; cin >> b; cout << b; return; } int main() { bool koniec = false; while( koniec != true ) { strona1(); unsigned char znak = getch(); switch( znak ) { case 224: znak = getch(); switch( znak ) { case 82: strona2(); break; } znak = 0; break; case 27: koniec = true; break; } } return( 0 ); }
|
|
DejaVu |
» 2009-01-18 05:21:35 Jeśli chcesz mieć możliwość wciśnięcia jakiegoś klawisza w każdej chwili musisz mieć jeden mechanizm do obsługi klawiszy. Obecnie masz dwa - jeden: getch();, który umożliwia Ci obsługę klawiszy funkcyjnych (np INSERT); drugi cin>> - czyli wczytywanie wartości, które 'blokuje' w praktyce dalsze działanie programu do momentu wciśnięcia klawisza ENTER. Musisz się pozbyć cin>> i zastąpić go inteligentnie getch(). Innymi słowy musisz napisać sobie kod do wczytywania wartości za pomocą getch()'ów. |
|
wujas Temat założony przez niniejszego użytkownika |
» 2009-01-18 12:47:23 moze pomozesz mi jak niewiecej to powinno wygladac? Bo za bardzo neimam idei jak to zrobic:/ |
|
pekfos |
» 2009-01-18 13:51:50 #include <conio.h> #include <iostream> using namespace std; int main() { int znak; cout << "naciśnij enter" << endl; znak = getch(); switch( znak ) { case 13: cout << "dobrze!" << endl; break; default: cout << "naucz sie czytac. enter!" << endl; break; } getch(); return 0; } tak mniej więcej powinno wyglądać użycie getch() aby wygodnie odczytywać warości liczbowe klawiszy użyj tego programu: #include <iostream> #include <conio.h> int main() { char znak = getch(); cout << "znak: " << znak << " liczba: " <<( int ) znak; getch(); return 0; } zapis ( int ) znak to to samo co static_cast < int >( znak ) można używać ich zamiennie to chyba wszystko:) |
|
wujas Temat założony przez niniejszego użytkownika |
» 2009-01-18 14:19:03 dzieki za pomoc ale akurat to wiem i o troche inna rzecz mi chodzi :) Jak napisał Pan Piotr chce aby klawisz INSERT działał w każdej chwili nieważne ile znaków wprowadziłem czy zaakceptowałem czy co innego. Chce aby program przeszedl do strony2 w dowolnym momencie kiedy tego bede chcial a nie ze musze najpierw czekac na fukcjie cin>> |
|
pekfos |
» 2009-01-18 14:30:31 #include <iostream> #include <conio.h> #include <console.ddt> using namespace std; using namespace ddt::console; void str1() { } void str2() { } int main() { int znak; do { clrscr(); str1(); znak = getch(); } while( znak != 82 ); } str2(); getch(); return 0; } wyświetla pierwsza strona dopóki nie naciśniesz Insert a jeśli chodzi ci o to żeby wyjść z wykonywania cin>> naciskając Insert to nie da rady. taka natura cin'a trzeba zaakceptować i nie ma klawiszy specjalnych |
|
wujas Temat założony przez niniejszego użytkownika |
» 2009-01-18 14:38:06 Pan Piotr napisał że muszę zrezygnować z funkcji cin>> to już wiem i napisał że można wczytać do pamięci dane za pomocą funkcji getch();Tylko jak to zrobić :))?
|
|
DejaVu |
» 2009-01-18 16:08:32 1) Tworzysz zmienną typu string 2) Jeśli wciśnięty klawisz z zakresu >=32 do <=127, dopisz znak do zmiennej string 3) Jeśli wciśnięty backspace i string niepusty => usuń ostatni znak 4) Jeśli wciśnięty ENTER => wykonaj konwersji zmiennej string na typ jaki Ciebie interesuje 5) Dorzucić jeszcze własne klawisze jakie chce się mieć obsługiwane (np. insert) |
|
« 1 » 2 |