FAQ SDL
FAQ SDLConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013
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.