kbhit() zurücksetzen

Hi, ich möchte einfach nur per Tastendruck eine Zahle um 1 erhöhen.
Aber sobald ich eine Taste drücke bleibt kbhit() 1.

Code:
int main()
{

    int n = 0;

    while ( !GetAsyncKeyState(VK_F12) )
    {
        if ( kbhit() )
        {
            cout << n << endl;
            n++;
        }
        else
        {
            continue;
        }
    }

    return 0;
}

Mache ich da was falsch ? :[
 
Hi,

Original von shinobo
Aber sobald ich eine Taste drücke bleibt kbhit() 1.

es ist mir völlig unklar, was du damit meinst. Die Syntax an sich ist bei dir, soweit ich das sehe, richtig. Erklär' mal genauer dein Problem!

mfg,

Athelstan
 
Meinst du, wenn man F12 drückt, soll n 1 mal erhöht werden? also nicht immer weiter solange man die Taste drückt?

Code:
int main()
{

    int n = 0;bool pressed = false;

    while ( !GetAsyncKeyState(VK_F12) )
    {
        if ( kbhit()  && pressed == false)
        {
            cout << n << endl;
            n++; pressed = true;
        }
        else
        {
            pressed = false;
            continue;
        }
    }

    return 0;
}

sollte dann deine Lösung sein ;)
 
Original von AlterHacker
Code:
int main()
{

    int n = 0;bool pressed = false;

    while ( !GetAsyncKeyState(VK_F12) )
    {
        if ( kbhit())
        {
            if(!pressed)
            {
                 cout << n << endl;
                 n++; pressed = true;
            }
        }
        else
        {
            pressed = false;
        }
    }

    return 0;
}

sollte dann deine Lösung sein ;)

FYP
 
Sorry dass es nicht ganz rüber kam.
Also wenn ich bei dem obigen Code (erster Post) eine Taste drücke werden solange die Zahlen ausgegeben bis ich F12 drücke.
Ich möchte aber pro Tastendruck immer nur eine Zahl ausgegeben haben.
Mein Problem ist das in der if Bedingung (kbhit()) sobald eine Taste gedrückt wurde immer 1 ist.
Nun möchte ich in der Anweisung kbhit wieder auf 0 setzen so dass der Zustand bei jedem Schleifendurchgang neu geprüft wird (Taste gedrückt oder nicht).
 
versuchs mal mit _getch()

_kbhit ist nonzero, wenn mindestens ein zeichen im in-buf ist. _getch() entfernt ein zeichen aus dem in-buf.
 
Zurück
Oben