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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

icone de fenêtre qui n'apparait pas


Sujet :

SDL

  1. #1
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut icone de fenêtre qui n'apparait pas
    Bonjour

    Je souhaite faire apparaitre une icone dans une fenêtre
    Aucun message d'erreur
    L'icone n'apparait pas

    Pouvez vous m'aider?

    Cordialment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    // instruction préprocesseur: recopier le code qui se trouve dans le ficher
    //========================================================================
    #include <SDL.h>
    #include <SDL_image.h>		// import image de format different de bmp
    #include <SDL_ttf.h>
    #include <stdio.h>
    #include <iostream>
     
    // declaration, initialisation de variables
    //=========================================
     
    // dimension ecran
    const int SCREEN_WIDTH = 640;
    const int SCREEN_HEIGHT = 440;
     
    // The window we'll be rendering to
    SDL_Window* gWindow = NULL;
    // The window renderer
    SDL_Renderer* gRenderer = NULL;
    // Globally used font
    TTF_Font *font = NULL;
     
    // couleur
    SDL_Color couleur_vert = {130, 250, 0, 1};
    SDL_Color couleur_texte = {5, 50, 200};
     
    // fonction principale
    //====================
    int main( int argc, char* args[] )
    {
     
    	//Initialize SDL
        SDL_Init( SDL_INIT_VIDEO );
    	//Set texture filtering to linear
    	SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "1" );
    	//Create window
    	gWindow = SDL_CreateWindow( "Table de multiplication", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
     
        // icone de la fenetre
        SDL_Surface* var_icon = IMG_Load("logo.png");
        if( var_icon != NULL )
        {
            std::cout << "image importeee" << std::endl;
        }
        SDL_SetWindowIcon(gWindow, var_icon);                           
     
    	//Create vsynced renderer for window
    	gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC );
    	//Initialize renderer color
    	//SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF );
    	SDL_SetRenderDrawColor( gRenderer, couleur_vert.r, couleur_vert.g, couleur_vert.b, couleur_vert.a);
    	//Initialize PNG loading
    	int imgFlags = IMG_INIT_PNG;
    	IMG_Init( imgFlags );
    	//Initialize SDL_ttf
    	TTF_Init();
    	//Load media
        //Open the font
    	font = TTF_OpenFont( "arial.ttf", 25 );
     
    	//Main loop flag
    	bool quit = false;
     
    	//Event handler
    	SDL_Event e;
     
    	//While application is running
    	while( !quit )
    	{
    		//The rerender text flag
    		bool renderText = false;
            bool bouton_egal_clique = false;
     
    		//Handle events on queue
    		while( SDL_PollEvent( &e ) != 0 )
    		{
    			//User requests quit
    			if( e.type == SDL_QUIT )
    			{
    				quit = true;
    			}
            }
    	}
     
    	//Free global font
    	TTF_CloseFont( font );
    	font = NULL;
     
    	//Destroy window	
    	SDL_DestroyRenderer( gRenderer );
    	SDL_DestroyWindow( gWindow );
    	gWindow = NULL;
    	gRenderer = NULL;
     
    	//Quit SDL subsystems
    	TTF_Quit();
    	IMG_Quit();
    	SDL_Quit();
     
    	return 0;
    }

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 21
    Par défaut
    Je l'ai essayé et j'ai eu l'icone, je l'ai compilé sur Linux Mint avec Mate si ça peut aidé, sur quel système es-tu (voir environnement graphique) ?

    Sinon il y a quelques lignes en trop comme le '#include <stdio.h>' comme tu inclus aussi <iostream> et tu pourrais eventuellement mettre le 'IMG_Init()' en amont même si ça n'a pas posé de problème pour moi.

    Voici le code que j'ai un peu retouché (enlever le superflu) mais sans rien changer à l'ordre d'execution (et qui fonctionne chez moi):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <SDL2/SDL.h>
    #include <SDL2/SDL_image.h>
    #include <iostream>
     
    const int SCREEN_WIDTH = 640;
    const int SCREEN_HEIGHT = 440;
     
    SDL_Window* gWindow = NULL;
    SDL_Renderer* gRenderer = NULL;
     
    int main( int argc, char* args[] )
    {
     
        SDL_Init( SDL_INIT_VIDEO );
     
        SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "1" );
     
        gWindow = SDL_CreateWindow( "Table de multiplication", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
     
        /* PROBLEME */
     
        SDL_Surface* var_icon = IMG_Load("logo.png");
        if( var_icon != NULL )
        {
            std::cout << "image importeee" << std::endl;
        }
        SDL_SetWindowIcon(gWindow, var_icon);
     
        /* FIN-POBLEME */
     
        gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC );
     
        IMG_Init( IMG_INIT_PNG );
     
        bool quit = false;
     
        SDL_Event e;
     
        while( !quit )
        { 
            while( SDL_PollEvent( &e ) != 0 )
            {
                if( e.type == SDL_QUIT )
                {
                    quit = true;
                }
            }
        }
     
        SDL_DestroyRenderer( gRenderer );
        SDL_DestroyWindow( gWindow );
     
        IMG_Quit();
        SDL_Quit();
     
        return 0;
    }
    EDIT: J'ai oublié de precisé que j'ai compilé avec SDL2 et non la 1.2.

    RE-EDIT: J'y penses mais peut être que tu ne le lance pas à partir du bon repertoire.

    Je m'explique, disons que tu as ton dossier 'Projet' avec comme sous dossier 'bin' et 'src' et que le fichier 'logo.png' se trouve dans 'bin', si tu fais un './bin/executable' à partir du dossier 'Projet' il va chercher l'image dans le dossier 'Projet' et non 'bin' car tu as juste ecris 'logo.png' dans le code. J'espère être clair mais ça pourrait être à cause de ça.

  3. #3
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    779
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 779
    Par défaut
    Hello,

    Pour moi, le code pour afficher le logo devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SDL_Surface *var_icon = IMG_Load("logo.png");
    if(var_icon != NULL) {
    	SDL_SetWindowIcon(gWindow,var_icon);
    	SDL_FreeSurface(var_icon);
    }
    else  // un message d'erreur
    	SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"erreur chargement logo.png : %s",IMG_GetError());	// un printf() peut suffire
    @Bigfoot71: binco compile également en sdl2, sinon il aurait des paquets d'erreur de compilation

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2022
    Messages : 21
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    @Bigfoot71: binco compile également en sdl2, sinon il aurait des paquets d'erreur de compilation
    Ah oui la coquille, au temps pour moi, je n'ai même pas reflechis en voyant le "SDL.h" seul, j'ai l'habitude que ce soit pour la 1.2, je reflechirais deux fois la prochaine fois ^^

  5. #5
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut
    Merci edgarjacobs & Bigfoot71
    Ca marche

  6. #6
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	// creer icone logo
    	SDL_Surface *var_icon = IMG_Load("logo_64_pixels_png.png");
    	if(var_icon != NULL)
    	{
    		SDL_SetWindowIcon(gWindow,var_icon);
    		SDL_FreeSurface(var_icon);
    	}
    	else  // un message d'erreur
    	SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"erreur chargement logo.png : %s",IMG_GetError());	// un printf() peut suffire
    - l'icone fenêtre apparait
    - l'icone barre des taches apparait
    - mais dans l'explorateur l'icone n'apparait pas:
    Nom : Sans titre.png
Affichages : 398
Taille : 1,4 Ko

  7. #7
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    779
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 779
    Par défaut
    Citation Envoyé par binco Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	// creer icone logo
    	SDL_Surface *var_icon = IMG_Load("logo_64_pixels_png.png");
    	if(var_icon != NULL)
    	{
    		SDL_SetWindowIcon(gWindow,var_icon);
    		SDL_FreeSurface(var_icon);
    	}
    	else  // un message d'erreur
    	SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"erreur chargement logo.png : %s",IMG_GetError());	// un printf() peut suffire
    - l'icone fenêtre apparait
    - l'icone barre des taches apparait
    - mais dans l'explorateur l'icone n'apparait pas:
    Nom : Sans titre.png
Affichages : 398
Taille : 1,4 Ko
    Ça, ce n'est plus un problème de sdl / de langage c

  8. #8
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut
    c'est pas 1 problème de sdl et c mais un problème de ...

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 113
    Billets dans le blog
    147
    Par défaut
    Bonjour,

    Je crois que cela peut se régler en ajoutant un fichier .ico ayant le même nom que l'exécutable. Aussi, ce fichier peut être intégré dans l'exécutable (au travers d'un fichier ressources). La méthode dépend de l'environnement de développement que vous utilisez.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. QTabWidget et fenêtre qui n'apparait pas
    Par Bktero dans le forum Débuter
    Réponses: 3
    Dernier message: 01/10/2010, 11h06
  2. Icone qui n'apparait pas
    Par Thedahu dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 06/06/2010, 19h15
  3. [VS.NET]MenuStrip qui n'apparait pas
    Par LordBob dans le forum Visual Studio
    Réponses: 2
    Dernier message: 29/11/2006, 18h08
  4. Réponses: 5
    Dernier message: 12/11/2005, 09h45
  5. Problem fond qui n'apparait pas sous FF.
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/09/2005, 22h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo