KeyPressed funzt nicht



  • Moinsen, ich möchte gerne Ein Progarmm schreiben, welches auf Tastendrücke reagiert. Jedoch kommt bei mir, wenn ich folgenden Quellcode benutze:

    private: System::Void timer1_Tick(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    
        if(e->KeyCode == Keys::F1){
            //Window 1 
        }
        if(e->KeyCode == Keys::F2){
            //Window 2
        }
    }
    ...
    

    immer diese Fehlermeldung:

    error C3352: "void Beichte::Form1::timer1_Tick(System::Object ^,System::Windows::Forms::KeyEventArgs ^)": Die angegebene Funktion stimmt nicht mit dem Delegattyp "void (System::Object ^,System::EventArgs ^)" überein.

    und zwar an dieser Stelle:

    this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
    

    Was kann man da machen :(!? Danke schonmal im Vorraus



  • Hallo,

    die Fehlermeldung ist doch eindeutig. Nen Timner erwartet einen anderen DelegateTyp - einen mit den einfachen EventArgs statt den KeyEventArgs. Wo soll der Timer auch die Keys herholen, soll er die raten? Du brauchst natürlich eins der Tastaturevents wenn du irgendwelche gedrückten Tasten auswerten willst.



  • danke, die sache ist die: ich möchte nen programm schreiben, welches global tastaturanschläge registriert und bei bestimmten tasten bestimmte dinge tut.
    wenn ich zum beispiel die taste "A" drücke, wenn das programm minimiert ist, soll trotzdem eine aktion des programms hervorgerufen werden. dachte mit nem timer ließe sich das realisieren. nun jetzt bin ich wieder bei null. hat wer ne idee?



  • Zwielicht schrieb:

    danke, die sache ist die: ich möchte nen programm schreiben, welches global tastaturanschläge registriert und bei bestimmten tasten bestimmte dinge tut.
    wenn ich zum beispiel die taste "A" drücke, wenn das programm minimiert ist, soll trotzdem eine aktion des programms hervorgerufen werden. dachte mit nem timer ließe sich das realisieren. nun jetzt bin ich wieder bei null.

    funktioniert doch mit einem timer - musst nur die Tastatur mit der WinAPI auslesen ... Funktionsname ist mir abe entfallen

    alternativ (definitiv bessere Variante!) kannst Du einen Hotkey definieren



  • also doch xD vielen dank! habe vorher nur win32 programmiert und bin erst seid knapp ner woche mit forms anwendungen am werkeln. wie definiere ich einen hotkey?



  • hat sich schon erledigt, habs hinbekommen 🙂


Anmelden zum Antworten