Domanda

Sono completamente sconcertato sul motivo per cui questo codice non riceve alcun evento keypress SDL. Gli altri eventi SDL (rimossi per chiarezza) funzionano correttamente. Non funziona sui miei computer XP o Vista. Nessun errore di compilazione / collegamento, non ricevere mai un evento 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;
}
È stato utile?

Soluzione

Dovrai creare una finestra con SDL_SetVideoMode per ottenere mouse e tastiera eventi.

Non credo che avrai fortuna provando a SDL_WM_GrabInput il mouse e tastiera senza finestra. Potrebbe anche generare avvisi di sicurezza la prima volta su macchine Windows moderm.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top