IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ SDL

FAQ SDLConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013 

 
OuvrirSommaireÉvènementsSouris

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 :

 
Sélectionnez
/* 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 :

 
Sélectionnez
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.

 
Sélectionnez
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 &.

Créé le 16 mars 2006  par Fiquet

Une des méthodes possibles est d'utiliser l'évènement SDL_MOUSEMOTION :

 
Sélectionnez
/* 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 :

 
Sélectionnez
Uint8 SDL_GetMouseState(int* x, int* y)

Qui retourne dans ses paramètres x et y la position actuelle du curseur.

Créé le 16 mars 2006  par Fiquet

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.

Créé le 16 mars 2006  par Fiquet

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2012 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.