2011-08-08 4 views
1

だから私、その後のKeyDownイベントをリッスンし、次のコードは、すぐにそれは1受け取ると終了します:SDLは、キーが解放されたときにはKeyDownイベントが発生しコントロールを左

int main(int argc, char** argv) { 
    SDL_Init(SDL_INIT_VIDEO); 
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF); 
    SDL_Event _event; 
    while (1) { 
     while (SDL_PollEvent(&_event)) { 
      if (_event.type == SDL_KEYDOWN) { 
       return 0; 
      } 
     } 
     SDL_GL_SwapBuffers(); 
    } 
} 

私はそれを実行すると、私ができますいずれかの矢印キー、文字、数字、F1〜F12 ...を押すと、左のコントロールキー以外のほとんどすべてのキーが押され、プログラムは即座に終了します。
しかし、左のコントロールキーを押すと、キーがリリースされるまで、プログラムは終了しません。

左のコントロールが押されている間に別のキーを押すと(Ctrl + Sなど) sは押された)。

左コントロールキーのこの異常な動作を無効にする方法はありますか?

Btw、これはWindowsでmingwを使用しています。私は他のコンパイラ/オペレーティングシステムでこの動作をテストしていません。

+0

[SDL_WM_GrabInput](http://sdl.beuc.net/sdl.wiki/SDL_WM_GrabInput)を試しましたか? –

+0

@Banthar私はそれを試みたが、それはすべてマウスを罠にした。 – Ponkadoodle

答えて

1

私は実行ファイルと同じディレクトリにsdl.dllを置くことを忘れていたことが判明しました。パス環境変数上にあったsdl.dllをロードしていました。コンパイルしていたバージョン(1.2.14)と一致するsdl.dllをアプリケーションのディレクトリに置き、今は正常に動作します。

関連する問題