0

Windows.h ライブラリの GetAsyncKeyState 関数を使用して、キーボードで押されたキーを定義していました。たとえば、押されたキーの int 値を返すプログラムを次に示します。

#include <iostream>
#include <windows.h>
using namespace std;
int main (){
    char i;
    for(i=8;i<190;i++){
        if(GetAsyncKeyState(i)== -32767){
            cout<<int (i)<<endl;
        }
    }

    return 0;
}

しかし今、openGl の非常に単純なゲームを作成しようとしていますが、この関数は非常に遅いようです。for サイクル 180 回と if ステートメントを必要としない関数はありますか。

ありがとう

4

2 に答える 2

1

PeekMessageTranslateMessageと を組み合わせて使用​​できますDispatchMessage。独自の Windows プロシージャ (WNDPROC) を登録して、Windows からの入力メッセージを処理するのは非常に簡単です。

MSG msg;
while(PeekMessage( &msg, NULL, 0, 0 ))
{
    TranslateMessage( &msg );
    DispatchMessage( &msg );
}

関数はDispatchMessage登録済みプロシージャを呼び出します。詳細については、こちらを参照してください。

于 2013-05-14T20:53:57.380 に答える