FAQ SDL
FAQ SDLConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013
Lorsque l'on a un évènement SDL_MOUSEBUTTONDOWN ou SDL_MOUSEBUTTONUP, on peut tester quel bouton de la souris a été appuyé, grâce à la structure SDL_Event comme ceci :
/* Dans notre code qui questionne la file d'évènements lors d'un évènement SDL_MOUSEBUTTONDOWN ou SDL_MOUSEBUTTONUP... */
if
(
Event.button.button ==
SDL_BUTTON_LEFT)
{
/* Code à exécuter si l'on a appuyé sur le bouton gauche */
}
if
(
Event.button.button ==
SDL_BUTTON_MIDDLE)
{
/* Code à exécuter si l'on a appuyé sur le bouton du milieu*/
}
if
(
Event.button.button ==
SDL_BUTTON_RIGHT)
{
/* Code à exécuter si l'on a appuyé sur le bouton droit */
}
On peut aussi récupérer directement l'état actuel des boutons souris avec la fonction :
Uint8 SDL_GetMouseState
(
int
*
x, int
*
y)
Qui renvoie une valeur Uint8 qui peut aussi être comparée avec les flags SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE et SDL_BUTTON_RIGHT.
Uint8 MouseState;
int
x, y;
/* Récupération de l'état de la souris */
MouseState =
SDL_GetMouseState
(&
x, &
y);
if
(
MouseState &
SDL_BUTTON
(
SDL_BUTTON_LEFT))
{
/* Code à exécuter si l'on a appuyé sur le bouton gauche */
}
if
(
MouseState &
SDL_BUTTON
(
SDL_BUTTON_MIDDLE))
{
/* Code à exécuter si l'on a appuyé sur le bouton du milieu*/
}
if
(
MouseState &
SDL_BUTTON
(
SDL_BUTTON_RIGHT))
{
/* Code à exécuter si l'on a appuyé sur le bouton droit */
}
Note : SDL définit des macros SDL_BUTTON_LMASK, SDL_BUTTON_MMASK et SDL_BUTTON_RMASK qui appellent automatiquement SDL_BUTTON avec le bouton correspondant, si l'on veut faire directement le test avec l'opérateur &.
Une des méthodes possibles est d'utiliser l'évènement SDL_MOUSEMOTION :
/* Dans notre code qui questionne la file d'évènements lors d'un évènement SDL_MOUSEMOTION... */
int
mouseX =
Event.motion.x;
int
mouseY =
Event.motion.y;
Une autre manière est de récupérer directement l'état actuel des évènements souris en utilisant la fonction :
Uint8 SDL_GetMouseState
(
int
*
x, int
*
y)
Qui retourne dans ses paramètres x et y la position actuelle du curseur.
Avec la fonction SDL_WarpMouse(Uint16 x, Uint16 y), qui prend en paramètres les coordonnées X et Y correspondant à la position que l'on veut donner au curseur.