Pfeiltasten



  • Hallo,
    Sitze nun schon knapp 3 Stunden an diesem Problem ich hoffe mir kann wer helfen.
    Also ich möchte ein Programm schreiben in welchem im main auf die verschiedene Funktionen zugegriffen wird. Der Benutzer wählt zuerst den entsprechenden Punkt mit den Pfeiltasten aus und bestätigt dann mit Enter. Nun hab ich das Problem das ich nicht weiß wie ich die Pfeiltasten überprüfen soll. Wenn ich sie mir mit printf("%d", getch()); ansschaue kommen immer zwei Werte raus. Ich kann wohl schlecht if ( c == 224 72) schreiben.
    Ich hoffe mein Problem ist verständlich und hoffe auf eine schnelle Antwort.
    Danke schon mal im Vorraus.


  • Mod

    Dann überprüf doch nacheinander die Werte.

    Weiterhin ist die Verarbeitung von Tastendrücken:
    1. betriebssystemabhängig
    2. eine Standardaufgabe

    Das heißt, es gibt sicherlich einfachere Lösungen (Betriebssystem für sich arbeiten lassen) und fertige Lösungspakete (Bibliotheken für Text-"G"UI). Für Details, musst du uns dein System verraten.



  • habe Windows 7



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • GetAsyncKeyState wäre passend wobei das auch ohne WINAPI geht.
    GetAsyncKeyState: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx

    GetAsyncKeyState prüft die Tasteneingaben Global das heisst auch wenn du z.b. gar nicht in deinem Programm arbeitest bekommt es trotzdem etwas von den Tasteneingaben mit.

    Hier 2 Beispiele:

    void PruefeTaste()
    {
    int key;
    
       while(1)
       {
       Sleep(1);
            for(key=0 ; key<256; key++)
            {
               if ( GetAsyncKeyState(key) == -32767 )
               {
                    printf("Key code: %d\n", key );
                    printf("%d\n" , key );
    
                    if ( key == 38 )
                    {
                       printf("Pfeiltaste hoch\n");
                    }
    
                    if ( key == 40 )
                    {
                       printf("Pfeiltaste runter\n");
                    }
    
                    if ( key == 39 )
                    {
                       printf("Pfeiltaste rechts\n");
                    }
    
                    if ( key == 37 )
                    {
                       printf("Pfeiltaste links\n");
                    }
               }
            }
       }
    }
    
    void PruefeTasteOhneWinApi()
    {
         int key;
         while(1)
         {
    
             key = getch();
             printf("Key code %d\n", key );
    
             if ( key == 72 )
             {
                printf("Pfeiltaste hoch\n");
             }
    
             if ( key == 80 )
             {
                printf("Pfeiltaste runter\n");
             }
    
             if ( key == 77 )
             {
                printf("Pfeiltaste rechts\n");
             }
    
             if ( key == 75 )
             {
                printf("Pfeiltaste links\n");
             }
         }
    }
    


  • Nunja du könntest ja switch benutzen:

    switch( Grade )
         {
            case 'A' : printf( "Excellent" );
            case 'B' : printf( "Good" );
            case 'C' : printf( "OK" );
            case 'D' : printf( "Mmmmm-.." );
            case 'F' : printf( "You must do better than this" );    
            default  : printf( "What is your grade anyway?" );
         }
    

    http://home.fhtw-berlin.de/~junghans/cref/SYNTAX/switch.html



  • Fischlinger schrieb:

    Hallo,
    Sitze nun schon knapp 3 Stunden an diesem Problem ich hoffe mir kann wer helfen.
    Also ich möchte ein Programm schreiben in welchem im main auf die verschiedene Funktionen zugegriffen wird. Der Benutzer wählt zuerst den entsprechenden Punkt mit den Pfeiltasten aus und bestätigt dann mit Enter.

    Vielleicht suchst Du so etwas:
    http://www.c-plusplus.net/forum/303169


Anmelden zum Antworten