Funktion getch() mit API nachprogrammieren??



  • Hallo,
    versuch mit API die Funktion getch() nachzuprogrammieren.
    ..bin wohl mit INPUT_RECORD, KEY_EVENT etc. auf dem richtigem Weg.
    Kann mir einer helfen?

    mfg
    ..mamibu



  • Du bist in der Tat richtig.

    Also getch() sieht circa so aus:

    - Konsolenmodi setzen um Ausgabe zu verhindern, etc.:

    GetConsoleMode() // verwenden um die derzeitigen Modi zu speichern
    SetConsoleMode() // verwenden um die Modi zu setzen (siehe MSDN, kein ENABLE_LINE_INPUT und kein ENABLE_ECHO_INPUT)
    

    - Solange ein INPUT_EVENT auslesen bis man ein KEY_EVENT hat:

    while(...)
    {
        // Einlesen
        INPUT_RECORD ir;
        DWORD charsread (0);
        ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),&ir,1,&charsread);
    
        // Prüfen
        // ...
    }
    

    - Bzw. HighLevel-Funktion nutzen um direkt ein Zeichen auszulesen:

    char zeichen (0);
    DWORD charsread (0);
    
    ReadConsole(GetStdHandle(STD_INPUT_HANDLE),&zeichen,1,&charsread,0);
    

    - Modi wieder resetten

    SetConsoleMode() // aufrufen mit den zuvor gespeicherten alten Einstellungen
    

    - Eingelesenes Zeichen zurückgeben.

    So damit solltest du es eigentlich schaffen, bei weiteren Fragen einfach posten :).

    MfG SideWinder


Anmelden zum Antworten