FAQ SDL
![logo](./images/faq_sdl.png)
FAQ SDLConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013
![Ouvrir](/template/kit/kitmoins.png)
Lorsque l'on travaille en mode fenêtré (par exemple X11 ou Windows), il est possible de changer le titre de la fenêtre et de l'icône tout simplement en faisant :
SDL_WM_SetCaption
(
"
Nom de ma fenêtre !
"
, "
Nom de mon icône
"
);
Il est ensuite possible de récupérer ces informations avec la fonction GetCaption() comme ceci :
char
*
Title;
char
*
Icon;
SDL_WM_GetCaption(&
Title, &
Icon);
printf("Titre : %s - Icône : %s"
, Title, Icon);
SDL permet aussi d'ajouter une icône à notre programme si l'on utilise bien sûr une fenêtre. Pour cela, il suffit de lui passer le pointeur d'une SDL_Surface en paramètre, par exemple depuis une image BMP :
SDL_WM_SetIcon(SDL_LoadBMP("monicone.bmp"
), NULL
);
Le deuxième paramètre sert à définir un masque de transparence ; mais si votre surface est de 256 couleurs et possède une couleur de transparence (voir https://jeux.developpez.com/faq/sdl/?page=2d#2D_colorkey), SDL se chargera pour vous de définir le masque.
Note : cette fonction doit être appelée avant la création de la fenêtre avec SDL_SetVideoMode().
Depuis la version 1.2.10 de SDL, il est indiqué dans la documentation, qu'il est possible de passer d'un mode à l'autre avec le code suivant :
Uint32 flags =
SDL_SWSURFACE; /* Initialise les paramètres de la fenêtre */
SDL_Surface *
screen =
SDL_SetVideoMode
(
640
, 480
, 32
, flags); /* Ouvre une fenêtre avec les paramètres voulus */
flags =
screen->
flags; /* Sauvegarde les paramètres actuellement utilisés en cas d'échec du changement d'état */
screen =
SDL_SetVideoMode
(
0
, 0
, 0
, screen->
flags ^
SDL_FULLSCREEN); /* Passe en mode plein écran */
if
(
screen ==
NULL
) screen =
SDL_SetVideoMode
(
0
, 0
, 0
, flags); /* Si le changement échoue, réinitialise la fenêtre avec la configuration précédente */
if
(
screen ==
NULL
) exit
(
1
); /* Si la réinitialisation échoue, alors c'est un échec total */
De plus, il existe la fonction SDL_WM_ToggleFullScreen() qui prend en paramètre la surface principale, mais ce n'est supporté qu'avec X11, donc plus portable.
Pour modifier la position de la fenêtre par défaut, on peut ajouter ce code :
#include <SDL/SDL_getenv.h>
putenv
(
"
SDL_VIDEO_WINDOW_POS=center
"
); //pour centrer la fenêtre
putenv
(
"
SDL_VIDEO_WINDOW_POS=0,0
"
); //pour placer en x,y (ici 0,0)
Attention, ceci ne fonctionnera pas avec tous les systèmes d'exploitation, mais il fonctionne normalement au moins sous Windows et Linux.