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

GTK+ avec C & C++ Discussion :

Mettre une image en fond d'écran ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut Mettre une image en fond d'écran ?
    Bonjour,

    Voilà, bizarrement mon Code::Blocks me sort cette erreur :
    undefined reference to 'gtk_set_sensitive'

    Pourtant j'utilise la dernière version stable de GTK...
    une idée ?

    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208
    Par défaut
    Pourquoi n'utilises tu pas gtk_widget_set_sensitive ?

    Est-ce que tu aurais un lien vers la documentation de la fonction gtk_set_sensitive ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    j'ai pas trouvé la doc...
    mais des résutats sur google... J'connaissais pas gtk_widget_set_sensitive, ou plutot j'l'avais oubliée ^^ C'est éxactement ce qu'il me fallait en tout cas merci ^^

    Sinon j'ai essayé cette astuce pour mettre une image en fond d'écran :
    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
     #include <gtk/gtk.h>
     
    void fond_ecran_set(GtkWidget *pWindow, gpointer user_data)
    {
    	GdkPixmap *pixmap_fond=(GdkPixmap*) user_data;
     
    	if (pixmap_fond)
    	{
    		gdk_window_set_back_pixmap (pWindow->window, pixmap_fond, FALSE);
    	}
    }
     
    gboolean fond_ecran_expose(GtkWidget *pWindow, GdkEventExpose *event, gpointer user_data)
    {
    	GdkPixmap *pixmap_fond=(GdkPixmap*) user_data;
     
    	if (pixmap_fond)
    	{
    		gdk_window_set_back_pixmap (pWindow->window, pixmap_fond, FALSE);
     
    		return TRUE;
    	}
     
    	return FALSE;
    }
     
    gint main(int argc, char **argv)
    {
    	GtkWidget *pWindow;
    	GdkPixbuf *pixbuf_fond=NULL;
    	GdkPixmap *pixmap_fond=NULL;
     
    	// Initialisation des librairies GTK+
    	gtk_init(&argc, &argv);
     
    	// Création d'une fenêtre principale.
    	pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_title(GTK_WINDOW(pWindow), "Fenêtre principale");
    	gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600);
     
    	// Chargement de l'image dans un pixbuf à la taille de la fenêtre (pensez à changer le nom et le chemin)
    	pixbuf_fond=gdk_pixbuf_new_from_file_at_size("./08_1280x1024.jpg", 800,600, NULL);
     
    	/* Si le chargement a réussi on crée le pixmap qui sera utilisé pour le fond.
    	Dans le cas contraire pixmap_fond=NULL. Cette valeur étant transmise aux fcts
    	d'affichage, on peut a tout moment savoir si on peut afficher ou non.*/
    	if (pixbuf_fond)
    	{
                    // Création d'un GdkPixmap vierge
    		pixmap_fond=gdk_pixmap_new(pWindow->window,
                                                                        gdk_pixbuf_get_width(pixbuf_fond),
                                                                        gdk_pixbuf_get_height(pixbuf_fond),
                                                                        gdk_visual_get_system()->depth);
     
                    // insertion du GdkPixbuf (image chargée) dans le GdkPixmap.
    		gdk_draw_pixbuf(pixmap_fond, pWindow->style-> fg_gc[GTK_WIDGET_STATE (pWindow)], pixbuf_fond,0,0,0,0,
                                                 gdk_pixbuf_get_width(pixbuf_fond), gdk_pixbuf_get_height(pixbuf_fond),
                                                 gdk_visual_get_system()->depth,0,0);
     
                    // Supression du GdkPixbuf devenu inutile
    		g_object_unref(pixbuf_fond);
    	}
     
    	/* Signaux associés pour l'affichage de l'image de fond.
    	Vous pourrez y ajouter le signal "size-allocate" pour modifier la taille de
    	l'image de fond en fonction de la taille de la fenêtre.*/
    	g_signal_connect(G_OBJECT(pWindow), "realize", G_CALLBACK(fond_ecran_set), pixmap_fond);
    	g_signal_connect(G_OBJECT(pWindow), "expose-event", G_CALLBACK(fond_ecran_expose), pixmap_fond);
     
    	// Signaux associés à la fenêtre principale pour quitter.
    	g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    	g_signal_connect(G_OBJECT(pWindow), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
     
    	// Boucle principale GTK+
    	gtk_widget_show_all(pWindow);
    	gtk_main();
     
    	return 0;
    }
    Mais il y a plein de fonction qui ne sont pas reconnues comme gdk_window_set_back_pixmap...

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par Kicker Voir le message
    j'ai pas trouvé la doc...
    mais des résutats sur google... J'connaissais pas gtk_widget_set_sensitive, ou plutot j'l'avais oubliée ^^ C'est éxactement ce qu'il me fallait en tout cas merci ^^

    Sinon j'ai essayé cette astuce pour mettre une image en fond d'écran :
    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
     #include <gtk/gtk.h>
     
    void fond_ecran_set(GtkWidget *pWindow, gpointer user_data)
    {
    	GdkPixmap *pixmap_fond=(GdkPixmap*) user_data;
     
    	if (pixmap_fond)
    	{
    		gdk_window_set_back_pixmap (pWindow->window, pixmap_fond, FALSE);
    	}
    }
     
    gboolean fond_ecran_expose(GtkWidget *pWindow, GdkEventExpose *event, gpointer user_data)
    {
    	GdkPixmap *pixmap_fond=(GdkPixmap*) user_data;
     
    	if (pixmap_fond)
    	{
    		gdk_window_set_back_pixmap (pWindow->window, pixmap_fond, FALSE);
     
    		return TRUE;
    	}
     
    	return FALSE;
    }
     
    gint main(int argc, char **argv)
    {
    	GtkWidget *pWindow;
    	GdkPixbuf *pixbuf_fond=NULL;
    	GdkPixmap *pixmap_fond=NULL;
     
    	// Initialisation des librairies GTK+
    	gtk_init(&argc, &argv);
     
    	// Création d'une fenêtre principale.
    	pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_title(GTK_WINDOW(pWindow), "Fenêtre principale");
    	gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600);
     
    	// Chargement de l'image dans un pixbuf à la taille de la fenêtre (pensez à changer le nom et le chemin)
    	pixbuf_fond=gdk_pixbuf_new_from_file_at_size("./08_1280x1024.jpg", 800,600, NULL);
     
    	/* Si le chargement a réussi on crée le pixmap qui sera utilisé pour le fond.
    	Dans le cas contraire pixmap_fond=NULL. Cette valeur étant transmise aux fcts
    	d'affichage, on peut a tout moment savoir si on peut afficher ou non.*/
    	if (pixbuf_fond)
    	{
                    // Création d'un GdkPixmap vierge
    		pixmap_fond=gdk_pixmap_new(pWindow->window,
                                                                        gdk_pixbuf_get_width(pixbuf_fond),
                                                                        gdk_pixbuf_get_height(pixbuf_fond),
                                                                        gdk_visual_get_system()->depth);
     
                    // insertion du GdkPixbuf (image chargée) dans le GdkPixmap.
    		gdk_draw_pixbuf(pixmap_fond, pWindow->style-> fg_gc[GTK_WIDGET_STATE (pWindow)], pixbuf_fond,0,0,0,0,
                                                 gdk_pixbuf_get_width(pixbuf_fond), gdk_pixbuf_get_height(pixbuf_fond),
                                                 gdk_visual_get_system()->depth,0,0);
     
                    // Supression du GdkPixbuf devenu inutile
    		g_object_unref(pixbuf_fond);
    	}
     
    	/* Signaux associés pour l'affichage de l'image de fond.
    	Vous pourrez y ajouter le signal "size-allocate" pour modifier la taille de
    	l'image de fond en fonction de la taille de la fenêtre.*/
    	g_signal_connect(G_OBJECT(pWindow), "realize", G_CALLBACK(fond_ecran_set), pixmap_fond);
    	g_signal_connect(G_OBJECT(pWindow), "expose-event", G_CALLBACK(fond_ecran_expose), pixmap_fond);
     
    	// Signaux associés à la fenêtre principale pour quitter.
    	g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    	g_signal_connect(G_OBJECT(pWindow), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
     
    	// Boucle principale GTK+
    	gtk_widget_show_all(pWindow);
    	gtk_main();
     
    	return 0;
    }
    Mais il y a plein de fonction qui ne sont pas reconnues comme gdk_window_set_back_pixmap...
    As tu inclus le fichier gdk/gdk.h ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    Ah non... C'est pas marqué qu'il faut l'inclure.
    Je l'ai inclus mais le résultat est le même...
    voici la liste de fonctions qui ne marchent pas :
    `gdk_pixbuf_new_from_file_at_size_utf8'
    `gdk_visual_get_system'
    `gdk_pixbuf_get_height'
    `gdk_pixbuf_get_width'
    `gdk_pixmap_new'
    `gdk_visual_get_system'
    `gdk_pixbuf_get_height'
    `gdk_pixbuf_get_width'
    `gdk_draw_pixbuf'
    `gdk_window_set_back_pixmap'

  6. #6
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Points : 117
    Points
    117
    Par défaut
    Génial ! Ca marche
    Seul problème : ça écrase tout !
    Les labels et les bouttons ne saffichent plus :-/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre une image en fond d'écran ?
    Par Virginia95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/01/2013, 14h24
  2. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  3. Réponses: 4
    Dernier message: 03/05/2005, 09h03
  4. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57

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