Je vous contacts parce-que j'apprends actuellement à utiliser la bibliothèque SDL, mais je ne parviens pas à changer l'icône de la fenêtre, j'ai lu plusieurs sujets indiquant le même problème mais aucune solution ne fonctionne.
Je suis le cours "Apprenez à programmer en C" de Mathieu Nebra. Même en copiant son code, rien n'y fait, l'icône n’apparaît pas.
Est-ce que vous auriez une solution svp? Sachant que je programmes avec gedit et la console sous Ubuntu.
Peut-être (je ne sais plus) mettre la ligne 16 après la 18 ?
Edit: il manque un break en ligne 40 bis. Dans le cas présent, ça ne change rien, mais c'est un bon réflexe à prendre. J'ajouterai que mettre un "default" est très bonne habitude.
- Edité par edgarjacobs 9 février 2020 à 17:43:21
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
J'ai essayé d'intervertir ces deux lignes mais ça ne change rien et dans les docs SDL c'est conseillé de justement mettre SetIcon avant SetVideoMode.
Pour le reste de tes commentaires, oui je mets habituellement toujours des break, juste un oublie, mais je ne comprends pas pourquoi mettre un default est une bonne habitude? Sur d'autres langage il est obligatoire peut-être?
C'est marrant, je viens de regarder comment j'avais fait en SDL2 et en fait, je n'ai rien fait mais l'icône est là. Je suppose qu'il prend par défaut l'icône encapsulé.
Pour encapsuler un icône, tu crées un nouveau fichier .rc (empty file) "ressources.rc" par exemple et tu y mets cette ligne :
1 ICON "monIcone.ico"
Le 1 fait partie du truc, il faut le mettre.
Pour créer un icône, tu fais comme tu veux, ce ne sont pas les softs gratos qui manquent. Il est possible qu'il soit ensuite repris automatiquement.
J'ai un vague souvenir d'avoir eu ce genre de souci, mais je ne me rappelle vraiment plus comment l'avoir résolu. Je travaille beaucoup avec des templates et ma bibliothèque, ce qui me permet de partir d'une base dont les problèmes ont été résolus sans avoir à me cogner 25 fois le même souci et me poser la question de savoir comment j'avais résolu le problème les fois d'avant. Puis surtout, j'ai lâché la SDL 1.x.
Le Default est une bonne habitude parce que quand tu vas attaquer un switch sur un type (enum) qui possède un grand nombre de valeurs, ça va éviter 200 warnings inutiles qui empêchent de voir l'essentiel de la messagerie de compilation.
Je code sur Ubuntu avec une machine virtuel (VirtualBox)
J'ai essayé en l'encapsulant mais ça ne fonctionne pas non plus, après je n'ais jamais utilisé ça, est-ce qu'il faut faire quelques choses en particulier pour qu'il soit compilé avec le programme?
Merci pour l'explication pour le Default du switch !
Ton code fonctionne. Peux-tu le modifier comme ceci et le tester:
/* Chargement de l'icône AVANT SDL_SetVideoMode */
SDL_Surface *icon;
icon=SDL_LoadBMP("sdl_icone.bmp");
if(icon) {
SDL_WM_SetIcon(icon,NULL);
SDL_FreeSurface(icon);
}
else
printf("icon not loaded: %s",SDL_GetError());
Au fait, quelles sont les dimensions de ton bmp ? Il me semble qu'elles ne peuvent pas dépasser 32x32 --> non, j'ai testé avec un fichier qui fait 71x96, ça fonctionne
- Edité par edgarjacobs 22 février 2020 à 11:09:09
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
J'ai essayé la modification, mais l'image se charge correctement, donc ça n'affiche pas le message d'erreur. J'essayerais d'utiliser le programme sous windows ce soir et je vous tiens au courant.
Merci de votre aide !
SDL affichage icone
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent