2008-11-02 5 views
3

Я полностью в тупике относительно того, почему этот код не получает никаких событий нажатия клавиш SDL. Другие события SDL (удаленные для ясности) работают нормально. Он не работает на моих компьютерах XP или Vista. Никаких ошибок компиляции/ссылок, просто никогда не получайте событие keydown.Нет обнаруженных событий нажатия клавиш SDL

#include "SDL/SDL.h" 
// Yes SDL.lib and SDLmain.lib are linked 

Uint32 TimeLeft(void) 
{ 
    static Uint32 next_time = 0; 
    Uint32 now; 
    now = SDL_GetTicks(); 
    if (next_time <= now) { 
     next_time = now + tickInterval; 
     return 0; 
    } 
    return(next_time-now); 
} 

int main(int argc, char **argv) 
{ 
    if(-1 == SDL_Init(SDL_INIT_EVERYTHING)) 
    { 
     cerr << "Error: SDL_Init failed" << endl; 
     return -1; 
    } 

    SDL_Event event; 

    bool quit = false; 

    while(!quit) 
    { 
     while(SDL_PollEvent(&event)) 
     { 
      switch(event.type) 
      { 
      case SDL_KEYDOWN: 
       switch(event.key.keysym.sym) 
       { 
       case SDLK_ESCAPE: 
       case SDLK_q: 
        quit = true; 
        break; 
       default: 
        break; 
       } 
       break; 
      case SDL_JOYAXISMOTION: 
       // stuff removed 
       break; 
      case SDL_QUIT: 
       quit = true; 
       break; 
      default: 
       break; 
      } 
     } 
     SDL_Delay(TimeLeft()); 
    } 

    SDL_Quit(); 

    return 0; 
} 

ответ

4

Чтобы получить события мыши и клавиатуры, вам нужно создать окно с SDL_SetVideoMode.

Я не думаю, что вам повезет, если вы будете SDL_WM_GrabInput мыши и клавиатуры без окна. Он также может повысить безопасность предупреждений в первый раз на моделях Windows-машин.

+0

Спасибо, я знал, что это была какая-то очевидная вещь, которую я пропускал. – 2008-11-02 20:30:31

Смежные вопросы