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

Discussion: les fonctions en gtk+

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2013
    Messages : 72
    Points : 50
    Points
    50

    Par défaut les fonctions en gtk+

    Bonjour tout le monde :-)
    J'ai fait ce petit programme :
    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
    #include <gtk/gtk.h>
    void func (GtkWidget *wid)
    {
    		wid = gtk_vbox_new (TRUE, 0);
    }
    int main (int argc, char **argv)
    {
    		GtkWidget *window;
    		GtkWidget *box1;
    		gtk_init (&argc, &argv);
    		window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    		gtk_window_set_default_size (GTK_WINDOW(window), 250, 250);
    		func (box1);
    		gtk_container_add (GTK_CONTAINER(window), box1);
    		gtk_widget_show_all (window);
    		gtk_main();
    		return 0;
    }
    Le but de ce programme est de créer un widget sous forme vbox à l'aide d'une fonction.
    quand j'execute ce programme, il ne marche pas, je reçois le message : "Segmentation fault (core dumped)"
    je suis sous linux, et j'utilise gtk+-2.0.
    Où est le problème SVP.
    Merci.

  2. #2
    Membre expert
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 1 969
    Points : 3 731
    Points
    3 731
    Billets dans le blog
    4

    Par défaut



    Tu transmets un pointeur à la fonction func(); que tu transformes ensuite en lui en affectant une autre valeur par la fonction gtk_vbox ();. Ton pointeur est perdu !

    Ton problème ici est que tu dois transmettre l'adresse du pointeur wid et non le pointeur lui-même. Ainsi dans func(); tu pourras accéder à son contenu.

    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
    void func (GtkWidget **wid)
    {
    // On accède au pointeur inclus dans wid par l'opérande *
    		*wid = gtk_vbox_new (TRUE, 0);
    }
    int main (int argc, char **argv)
    {
    		GtkWidget *window;
    		GtkWidget *box1;
    		gtk_init (&argc, &argv);
    		window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    		gtk_window_set_default_size (GTK_WINDOW(window), 250, 250);
    // Transmission de l'adresse du pointeur wid
    		func (&box1);
    		gtk_container_add (GTK_CONTAINER(window), box1);
    		gtk_widget_show_all (window);
    		gtk_main();
    		return 0;
    }
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2013
    Messages : 72
    Points : 50
    Points
    50

    Par défaut

    OK ! j'ai bien compris, merci beaucoup cher ami

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2009
    Messages
    1 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2009
    Messages : 1 351
    Points : 1 995
    Points
    1 995

    Par défaut

    Bonjour,

    j'ajoute que GTK+ 2 est en fin de vie et ne devrait plus être utilisé dans de nouvelles applications. GTK+ 3 est sorti depuis 2011 et est la version stable actuelle. GTK+ 4 devrait lui sortir en 2019. Je te conseille donc de développer en GTK+ 3, cela t'évitera d'apprendre des choses obsolètes.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

Discussions similaires

  1. undefined reference pour toutes les fonctions gtk
    Par bertrand125 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 03/03/2014, 15h59
  2. Ordre de priorité dans les fonctions gtk
    Par kenshi240683 dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 23/05/2008, 16h12
  3. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  4. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

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