KeyInput stockend...



  • Hallo liebes C++ team,
    ich probiere mich gerade an c++ und bin nun an ein problem gestoßen und zwar wenn ich die tasten ablesen möchte funktioniert das nur stockend.
    (A (Pause) AAAAAAAAAAAAAAA...)
    wie kann ich nun das zu einem konstanten AAAAAA... machen?

    Sorry für die Formulierung weiß nicht wie ich es sonst formulieren hätte sollen!
    Code:

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	switch (message)
    	{
    	case WM_PAINT:
    	{
    		...
    	}
    	break;
    	case WM_KEYDOWN:
    	{
    		switch (wParam)
    		{
    		case VK_LEFT:
    			playerpositionX -= 10;
    			InvalidateRect(hWnd, NULL, true);
    			break;
    		default:
    			return 0;
    		}
    	}
    	break;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	default:
    		return DefWindowProc(hWnd, message, wParam, lParam);
    	}
    	return 0;
    }
    


  • Dies liegt an der bei Windows in den Systemeinstellungen/Tastatur eingestellten Tastaturverzögerung.
    Für direktes Abfragen von Tastendrücken benutze die Funktion GetKeyState oder GetAsyncKeyState (s.a. Forum: GetAsyncKeyState):

    if (GetKeyState(x) & 0x8000)
    {
      // high bit is set. Key is currently held down.
    }
    

    Dafür muß dieser Code dann aber auch raus aus dem WM_KEYDOWN - am besten du benutzt dann einen Timer dafür.

    PS: Wenn du ein Spiel programmieren möchtest, dann nimm besser gleich eine passende Lib wie SDL2 (C) oder SFML (C++).



  • Th69 schrieb:

    Dafür muß dieser Code dann aber auch raus aus dem WM_KEYDOWN - am besten du benutzt dann einen Timer dafür.

    Danke für die antwort aber wie implementiere ich einen Timer?



  • Stichwörter: SetTimer, WM_TIMER
    s. z.B. Timer programmieren


Anmelden zum Antworten