La SDL propose la fonction suivante :
Uint8 SDL_GetAppState(void);
Cette fonction retourne un entier entre 0 et 7 avec une combinaison binaire des champs suivants :
1 2 3 4
|
#define SDL_APPMOUSEFOCUS 0x01 /* The app has mouse coverage */
#define SDL_APPINPUTFOCUS 0x02 /* The app has input focus */
#define SDL_APPACTIVE 0x04 /* The application is active */ |
Cela veut dire que le retour peut prendre les valeurs suivantes :
- La souris est sur la fenêtre;
- La souris a le focus des entrées, cela veut généralement dire que la fenêtre est sélectionnée et en premier plan;
- L'application est active
Une solution pour recevoir les changements d'états est d'ajouter ceci dans la boucle événementielle :
1 2 3 4 5 6 7 8 9 10 11
|
/* Valeur impossible pour oldstate, cela force le premier changement */
Uint8 state, oldstate = 255
...
state = SDL_GetAppState();
/* Test de changement */
if(oldstate != state) {
oldstate = state;
std::cout << "Nouvel etat : " << (int) state << std::endl;
} |
Jc
Partager