キーボードのキーを押したまま処理しようとすると、ちょっと躊躇している理由は誰にも分かりますか? WinProc(...)の中で、キーが押されているときに画面上の画像(OpenGL)を動かす関数を呼び出しています。私はそれを押して、1つの応答を取得し、約0.5秒の何もない、それは通常のように振る舞います(WinMainループごとに1ピクセル移動します)。キーボード入力が躊躇されていますか?
私は無効にする必要があるいくつかの機能のためにWindowsのメッセージが何とか遅れているのだろうかと思います。
ここに私のコードです:
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;
}
とWINPROC(より多くの例が、同じことが...ありました):
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;
}
}
とkey_RIGHT:
void key_RIGHT()
{
MoveObjectRight1Pixel();
}
私は愚かな回避策を講じなければならないのではないかと心配しました... Windowsに文明化された速度で私にメッセージを送るよう強制する方法はありませんか? –
それは巨大なキーボードです。 :)ほとんどの標準的なPCキーボードは約105個のキーなので、128ビットは私にとって十分に聞こえます。 – unwind
@unwind:ほとんどのキーボードには正当な数のキーがありますが、仮想キーコード(VK_ *定数)の範囲は0〜255です。 –