Programm soll wieder stoppen



  • Hallo mein Programm führt nachdem der User 9 drückt etwas aus.
    Aber ich will das das Programm sobald einen 8 gedrückt wird wieder aufhört.
    Hier ist der Quellcode:

    #include <windows.h>
    #include <iostream>
    using namespace std;

    int main()
    {

    short KeyState;
    short ArrKeyState[256];
    long CheckSum;
    long OldCheckSum;

    OldCheckSum = 987654; // dummy

    while (1)
    {
    Sleep(5);
    CheckSum = 0;
    for (int i = 0; i < 256; i++)
    {
    KeyState = GetAsyncKeyState(i);
    CheckSum += KeyState;
    ArrKeyState[i] = KeyState;

    }

    if (OldCheckSum != CheckSum)
    {

    for (int i = 0; i < 256; i++)
    {

    // -32767 = KeyDown
    if (ArrKeyState[i] == -32767)

    {

    if(i==49) // 49 entspricht 9
    blabla

    //Hier soll er stoppen wenn eine 8 gedrückt wird

    }
    }
    }
    OldCheckSum = CheckSum;
    }
    }



  • Die einfachste Version, die das Problem lößt ist eine globale Variable des Typs Boolean.
    Aber du bist hier im falschen Sub-Forum.



  • Dieser Thread wurde von Moderator/in flenders aus dem Forum WinAPI in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Kannste mal erklaeren wie ich das mit bool machen kann?=



  • Erstens: sfds

    Zweitens: Wenn du nur eine Schleifenebene hast, kannst du mit break ganz schnell raus. Andernfalls mußt du schrittweise alle verschachtelten Schleifen verlassen (wobei, das ist eine der Ausnahmen, wo auch ein goto in Frage kommen würde)

    bool exit = false;
    while(!exit)
    {
      ...
      if(i=='8') exit = true;
    }
    

    Btw, es gibt elegantere Wege, die Nutzereingabe abzufragen als dein KeyState-Gebastel.


Anmelden zum Antworten