[Précédente]
Table Des Matières
[Suivante]
Utiliser l'API Simple DirectMedia Layer
Evènements
Pour attendre un évènement utiliser la fonction SDL_WaitEvent().
|
Astuce:
SDL possède un support universel des claviers, transformant le scancode
de l'évènement et plçant son équivalent dans event.key.keysym.unicode.
Ce traitement réclame d'activer l'UNICODE en appelant SDL_EnableUNICODE().
|
Exemple:
{
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
printf("La touche %s a été préssée!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
case SDL_QUIT:
exit(0);
}
}
|
- Questionner la file d'évènements.
Utiliser pour cela la fonction SDL_PollEvent().
|
Astuce:
Vous pouvez "jeter un coup d'oeil" aux évènements de la file
d'évènements sans les enlever en passant SDL_PEEKEVENT comme paramètre
de SDL_PeepEvents(). |
Exemple:
{
SDL_Event event;
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
printf("La souris a bougé de %d,%d à (%d,%d)\n",
event.motion.xrel, event.motion.yrel,
event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
printf("Le bouton %d de la souris a été préssé en (%d,%d)\n",
event.button.button, event.button.x, event.button.y);
break;
case SDL_QUIT:
exit(0);
}
}
}
|
- S'interroger sur l'état d'un évènement
Afin de manipuler les évènements directement, chaque type
d'évènement à une fonction qui vous permet de contrôler
l'état d'une application. Si vous utilisez exclusivement ce système,
vous pouvez ignorer tous les évènements grâce à SDL_EventState(),
et appeler périodiquement SDL_PumpEvents() pour mettre à jour
l'état de votre application.
|
Astuce:
Vous pouvez cacher ou montrer le curseur de votre souris en utilisant
SDL_ShowCursor(). |
Exemple:
{
SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
}
void CheckMouseHover(void)
{
int mouse_x, mouse_y;
SDL_PumpEvents();
SDL_GetMouseState(&mouse_x, &mouse_y);
if ( (mouse_x < 32) && (mouse_y < 32) ) {
printf("La souris est en haut à gauche!\n");
}
}
|
[Précédente]
Table Des Matières
[Suivante]
|