Weiß jemand, warum gibt es ein Zögern, wenn Sie eine Tastaturtaste gedrückt halten und versuchen, sie zu verarbeiten? Ich rufe eine Funktion in meinem WinProc (...) auf, die ein Bild auf dem Bildschirm (OpenGL) verschiebt, wenn eine Taste gedrückt gehalten wird. Ich drücke es und bekomme eine einzige Antwort, dann gibt es etwa 0,5 Sekunden nichts, dann verhält es sich wie normal (bewegt sich 1 Pixel pro WinMain-Schleife).Tastatureingabe zögert, wenn gedrückt?
Ich frage mich, ob die Windows-Nachrichten irgendwie wegen einer Funktion verzögert werden, die ich deaktivieren muss ???
Hier ist mein Code:
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int nshowcmd)
{
bool quit = false;
MSG msg;
createWindow(hinstance, SCRW, SCRH, SCRD, WINDOWED);
// Main loop
while (!quit)
{
if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))
{
if (msg.message == WM_QUIT)
quit = true;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
renderFrame(); // processes graphics
SwapBuffers(hdc);
}
return msg.lParam;
}
und WinProc (gab es mehr Fälle aber gleiche ...):
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
switch(msg)
{
case WM_KEYDOWN:
switch (wparam)
{
case VK_RIGHT:
key_RIGHT();
return 0;
}
return 0;
}
}
und key_RIGHT:
void key_RIGHT()
{
MoveObjectRight1Pixel();
}
Ich hatte Angst, ich müsste eine alberne Problemumgehung machen ... Es gibt keine Möglichkeit, Windows zu zwingen, mir Nachrichten mit einer zivilisierten Rate zu schicken? –
Das ist eine riesige Tastatur. :) Die meisten Standard-PC-Tastaturen haben ungefähr 105 Tasten, daher klingen 128 Bit wie eine Menge für mich. – unwind
@unwind: True, die meisten Tastaturen haben eine vernünftige Anzahl von Schlüsseln, aber die virtuellen Schlüsselcodes (VK_ * Konstanten) reichen von 0 bis 255. –