[C++] Czekanie na jakis klawisz

0
while(kbhit()) getch();    // czyszczenie bufora klawiatury
do { } while(~~kbhit());   // czekanie na naciecie klawisza

Dlaczego te dwie instrukcje nie czekaja na nacisniecie klawisza?
Wybaczcie, ze takie banalne pytanie, ale dopiero zaczynam. Wiem, ze czekanie na klawisz mozna zrobic sama funkcja getch(), ale to nieumozliwi mi sprawdzanie kilku warunkow, ktore moglyby przerwac petle czekania.
Sorry za brak polskich literek, ale nie moge w starym Netscape'ie ich wpisywac, bo mi sie wywala :/
Z gory Thx. za wszystkie odpowiedzi (na temat)

0

Jeżeli dobrze pamiętam to kbhit() nie czeka na naciśnięcie klawisza tylko wykrywa jego naciśnięcie.
Program nie zatrzyma się gdy napotka kbhit() tylko jeśli coś naciśnięto to kbhit() zwraca wartość != od 0, w przeciwnym wypadku 0.

Tak więc:

do {} while(kbhit()); od razu zwraca 0.

Bufor czyści chyba fflush(stdin);

0

ludzie tez szukam jakiegos krypciku na to aby aplikacja dzialajaca w tle reagowala na nacisniecie jakiegos klawisza (zaprogramowanego) i cos tam robila... moze ktos mi pomoze... :D pliz... :D:D:D bede wdzieczny... C++Builider 5.0 :)

0

Co do BCB to tutaj nie trzeba takich kombinacji. Po prostu możesz reagować na zdarzenia, jeżeli w twojej aplikacji jest naciskany, lub założyć hook na klawiaturę i reagować na komunikat.

Co do pytania głównego, to tak jak poprzednik wspomniał fflush(stdin) czyści bufor wejściowy, a czekanie zrobić naljlepiej tak:
while (!kbhit());
Czyli dopóki nie zostanie naciśnięty klawisz program będzie stał.

0

#include <stdio.h>
#include <conio.h>

int main()
{
char key = 0;
while(key != 27) // <ort>dopuki </ort>jest klawisz iny niz ESC
{
if(kbhit())
key = getch();
}
return 0;
}

0

ALE JAK ZALOZYC HOOK NA KEYBOARD ???? :/ ja tam lamka jestem w programowaniu... (moze jakis malutki przyklad) BTW aplikacja dziala w tle (nie jest aktywna) ??? pliiiiiiiiiiizzzzzzzz :)

0

ALE JAK ZALOZYC HOOK NA KEYBOARD ???? :/ ja tam lamka jestem w programowaniu... (moze jakis malutki przyklad) BTW aplikacja dziala w tle (nie jest aktywna) ??? pliiiiiiiiiiizzzzzzzz :)

http://4programmers.net/view_faq.html?id=181
Jedna z metod. Chyba nie przeszkadza, że Delphi?

0

http://www.binboy.org/forum/viewtopic.php?t=4281
Na samym koncu tego tematu zapodalem wszystkie predefiniowane przez M$ funkcje do Hookowania !!

/*

  1. Stosuj tag url do linków
  2. To samo jest w pomocy Windows SDK w builderze. Szkoda podawać same nazwy funkcji, skoro w pomocy jest cały dział na ten temat wraz z opisem.
    */
    Bosze i po to podalem nazwy zeby se chlopak nie szukal w pomocy w ciemno !!!!!! ale od razu wiedzial co i jak !!!!!!!! :-[ pomoc (raczej pole3cam MSDN jest jak wiesz rozlegla :-[ !!
0

dzieki panowie moze cos z ego zrobie :/ (delphi) :D:D:D moze mi sie uda przetlumaczyc ;) dzieki takze snaj... :D:D:D

1 użytkowników online, w tym zalogowanych: 0, gości: 1