FAQ SDL

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



