GetAsyncKeyState Problem



  • Abend,

    und zwar habe ich ein Problem mit GetAsyncKeyState.

    Erstmal mein Code:

    void table::ProcessSlider()
    {
    
    	if (tableShown) // Sollte nur ausgeführt werden, wenn dieser BOOL auf true steht..
    	{
    		if (GetAsyncKeyState(VK_LEFT) & 1)
    			ResetTableToSelectionStart();
    	}
    
    }
    

    Das Problem ist, wenn ich die Taste VK_LEFT drücke und der BOOL tableShown auf FALSE steht, wird die GetAsnycKeyState DANACH trotzdem ausgeführt, wenn der BOOL auf TRUE gesetzt wird.

    Kennt das jemand von euch?

    Ich versteh garnicht was hier läuft..

    Freue mich über jegliche Hilfestellung.

    Lg John



  • Wie meinst du das?
    Vermutung: GetAsyncKeyState liefert zwei wahre Werte zurück: einmal wenn die Taste gedrückt ist und einmal, wenn die Taste seit dem letzten Aufruf von GetAsyncKeyState gedrückt wurde und du wertest letzteren aus, obwohl du eigentlich ersteren auswerten möchtest.



  • Oh, okay und wie kann ich den ersten auswerten?



  • Jhnyy schrieb:

    Oh, okay und wie kann ich den ersten auswerten?

    Lies die Doku.



  • Ist die Funktion GetAsyncKeyState erfolgreich und die angegeben Taste gedrückt, so wird das Bit "&H8000" in der Rückgabe gesetzt. Ist die Taste momentan nicht gedrückt, wurde aber seit dem letzten Funktionsaufruf betätigt, so ist in der Rückgabe das "&H1" Bit gesetzt. Wurde und ist die Taste nicht gedrückt worden oder trat ein Fehler bei dem Funktionsaufruf auf so ist der Wert "0" die Rückgabe.

    In Thread << GetAsyncKeyState() and GetKeyState() [Solved] >>
    siehe #Post4:
    https://www.codeproject.com/script/Forums/View.aspx?fid=1647&msg=3411428

    Blog:
    https://blogs.msdn.microsoft.com/oldnewthing/20041130-00/?p=37173


Log in to reply