Eingabefeld in Programm



  • Hi
    Ich möchte eine Konsole in einem Programm einbauen.
    Ich habe es heute mit DirectInput versucht, jedoch ist dies viel zu schnell. (Ich kann nicht nur einen Buchstaben eingeben sondern es werden immer gleich ein paar 6 und mehr ausgegeben) Dies ist so also nicht möglich.
    Gibt es eine Textbox, welche in integrieren könnte? Ich möchte das ganz aber so halb transparent machen....

    Oder wie löse ich das mit dem DirectInput?
    Wie kann ich mit DirectInput die ESC-Taste abfragen????

    Hat mir jemand ein Beispiel dazu?

    Vielen Dank!



  • [] Autocogito

    Bye, TGGC (Wähle deine Helden)



  • Wie wärs mit Variablen wie z.B.
    bool KnopfGedruecktSPACE = false;

    und dass dann immer dementsprechend updaten (bei der DeviceAbfrage...) dann wird eben pro Tastendruck alles nur einmal angenommen... z.B. so:

    if(TasteGedrückt('SPACE')&&KnopfGedruecktSPACE == false)
    {
        KnopfGedruecktSPACE = true;
        // alles, was du sonst noch willst...
    }
    else if(!TasteGedrückt('SPACE'))
        KnopfGedruecktSPACE = false;
    

    cya WirrWar2850.



  • addict schrieb:

    Ich habe es heute mit DirectInput versucht, jedoch ist dies viel zu schnell. (Ich kann nicht nur einen Buchstaben eingeben sondern es werden immer gleich ein paar 6 und mehr ausgegeben) Dies ist so also nicht möglich.

    Natürlich ist das möglich, ich habe sowas selbst schon gemacht.
    Du kannst Dir von DirectInput im "Buffered Mode" auch Ereignisse senden lassen. Dann erfährst Du, wenn eine Taste gedrückt wurde oder wenn sie losgelassen wurde. Dann reagierst Du einfach nur auf das "Taste gedrückt"-Ereignis.



  • ansonsten wäre maybe auch noch eine möglichkeit n array von booleans zu habn für jede taste..wenn gedrückt = true wenn nicht = false. und dann bei jeder eingabe für das textfeld überprüfen:
    wenn taste gedrückt && zeit in der taste als letztes gedrückt wurde < einem bestimmten delay
    dann
    nimm die eingabe an
    ...

    mfg



  • Dass kannste auch einfacher machen...
    Du machst anstatt einem Array, in dem du die Eingaben speicherst, einfach 2 davor. In den 2. kopierst du am Ende eines Frames einfach den 1. Array. Dann kannste einfach mit 2en prüfen, ob ne Taste gedrückt wurde... Wenn also 1 UND 2 positiv geprüft werden, so hält der Benutzer die Taste gedrückt...

    cya WirrWar2850.



  • wobei dadurch sein problem der geschwindigkeit der eingabe gelöst ist.

    mfg



  • Ich hatte das Prob. ja auch mal, wobei das mein erster einfall war... hat auch funktioniert, einfach ne for loop (for(int i=0;i<256;i++){array2[i] = array1[i]};)

    cya WirrWar2850.



  • Funktioniert die Windowsnachricht nicht mehr wenn Direktinput aktiviert ist?

    Kann´s hier nicht ausprobieren, aber wenn doch dann währe das Problem doch kein´s, oder? 🤡



  • Ich habe das Problem nun so gelöst, dass ich mir den letzen Input merke und erst wieder einen Buchstaben schreibe, wenn sich der Input gewechselt hat...
    Dies funktioniert ohne Probleme!



  • Aber DirectInput is schneller 😉 ...

    cya WirrWar2850.



  • Ich mache es ja auch mit DirectInput!;)



  • addict schrieb:

    Ich habe das Problem nun so gelöst, dass ich mir den letzen Input merke und erst wieder einen Buchstaben schreibe, wenn sich der Input gewechselt hat...
    Dies funktioniert ohne Probleme!

    Und wenn Du zweimal denselben Buchstaben drückst? 🤡



  • Der vorherige Post war auf BigSigi bezogen 😉 ... deiner war noch nich da, als ich den oben geschrieben hab 😃 ...

    und zu Sgt.Nukem:
    Man aktualisiert die Eingabe einfach jeden Frame und schreibt vor der Aktualisierung die Daten in den 2. Array...

    addict schrieb:

    Ich habe das Problem nun so gelöst, dass ich mir den letzen Input merke und erst wieder einen Buchstaben schreibe, wenn sich der Input gewechselt hat...
    Dies funktioniert ohne Probleme!

    ... ich denke mal, wenns ohne Probs. tut, dann macht ers auch so 😉 ...

    cya WirrWar2850.


Anmelden zum Antworten