ďťż

Ładny brzuch

Czy jest jakaś funkcja biblioteczna, która czeka aż użytkownik przyciśnie jakiś klawisz, a potem zwraca nam jaki klawisz przycisnęliśmy?



Ale w WinApi czy w konsolówce?
Bo jeśli w WinApi to taka funkcja jest raczej średnio potrzebna :) Wystarczy w pompie komunikatów odebrac zdarzenie WM_KEYDOWN i sprawdzić, co to za klawisz:

(...) case WM_KEYDOWN: { if (wParam == VK_ESCAPE) { Robimy coś, kiedy naciśnięty Escape } return 0; }
Wiecęj: http://xion.gamedev....k/html/3_3.html, sekcja o klawiaturze :D

Jeśli w konsolówce, to nie wiem :)
Użytkownik miszczu49 edytował ten post 01 sierpień 2006, 11:40
W konsolówce

#include <conio.h> ... int a; a=getch(); //gdzie a to kod klawisza
Użytkownik Maciek J. edytował ten post 01 sierpień 2006, 12:07


Dzieki Maciek J. Ale mam jeszcze pytanko, gdzie mogę znaleść kody klawiszy?
Konkretnie chodzi mi o strzałki

hex 25 klawisz strzałka w lewo 26 klawisz strzałka w górę 27 klawisz strzałka w prawo 28 klawisz strzałka w dółzobacz to

//edit
ale raczej mi nie wychodzi to ze strzałkami w getch(). Ja zwykle używałem wsad. Masz kod na sprawdzanie kodów klawiszy #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char *argv[]) { int kod; while(1){ kod=getch(); cout << kod << endl; if (kod==27) break; } system("PAUSE"); return EXIT_SUCCESS; }
Użytkownik Maciek J. edytował ten post 01 sierpień 2006, 12:15

ale raczej mi nie wychodzi to ze strzałkami w getch()
Domyślam się, że getch to skrut od "get char", i dlatego ta sztuczka działa tylko na klawiszach znakowych. Poprostu rzutujesz z char do int, i wychodzi ci kod danego znaku z ANSI.


gdzie mogę znaleść kody klawiszy?
Konkretnie chodzi mi o strzałki


Też kiedyś tego potrzebowałem i napisałem taki program ^_^
#include <iostream> #include <conio.h> using namespace std; char wybor; int main() { wybor = getch(); cout << static_cast<unsigned int>(wybor) << endl; return 0; }

Program zwraca kod ASCI naciśniętego klawisza :)

Nacisnięcie strzałki wysyła 2 znaki. Dlatego możesz odebrać np tak:#include <iostream> #include <conio.h> int main() { char znak; do { znak = _getch(); if(znak == -32) { znak = _getch(); switch(static_cast<int>(znak)) { case 75: std::cout << "strzalka w lewo" << std::endl; break; case 72: std::cout << "strzalka w gore" << std::endl; break; case 77: std::cout << "strzalka w prawo" << std::endl; break; case 80: std::cout << "strzalka w dol" << std::endl; break; } } else { std::cout << static_cast<int>(znak) << " - " << znak << std::endl; } }while(znak != 27); return 0; }Albo jeżeli chcesz obsłużyć same strzałki to możesz podarować sobie sprawdzanie pierwszego znaku (int = -32) tylko przy naciśnięciu strzałki raz puścić pętle bez robienia niczego to w następnym obiegu otrzymasz kod naciśniętej strzałki (75,72,77,80).


Nacisnięcie strzałki wysyła 2 znaki. Dlatego możesz odebrać np tak:#include <iostream> #include <conio.h> int main() { char znak; do { znak = _getch(); if(znak == -32) { znak = _getch(); switch(static_cast<int>(znak)) { case 75: std::cout << "strzalka w lewo" << std::endl; break; case 72: std::cout << "strzalka w gore" << std::endl; break; case 77: std::cout << "strzalka w prawo" << std::endl; break; case 80: std::cout << "strzalka w dol" << std::endl; break; } } else { std::cout << static_cast<int>(znak) << " - " << znak << std::endl; } }while(znak != 27); return 0; }Albo jeżeli chcesz obsłużyć same strzałki to możesz podarować sobie sprawdzanie pierwszego znaku (int = -32) tylko przy naciśnięciu strzałki raz puścić pętle bez robienia niczego to w następnym obiegu otrzymasz kod naciśniętej strzałki (75,72,77,80).

Wiem, że wysyła dwa znaki, ale zakładam, że ktoś nie ma kompletnego pojęcia jaki kod ASCI ma np. strzałka w lewo ^_^


Albo jeżeli chcesz obsłużyć same strzałki to możesz podarować sobie sprawdzanie pierwszego znaku (int = -32) U mnie ten znak (-32) ma inną wartość. W Dev-cpp ma '224', w bcc32 '0'. Więc zanim wkleisz ten kod do programu sam sprawdź jaki masz ten kod strzałki ;) .

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •