События SDL Keypress не обнаружены - PullRequest
2 голосов
/ 02 ноября 2008

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

#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;
}

1 Ответ

4 голосов
/ 02 ноября 2008

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

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

...