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 :

Probleme GTK exe a cesser de fonctionner


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut Probleme GTK exe a cesser de fonctionner
    Bonjour
    voila tout d'abord je vous donne mon code


    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
     
    typedef struct tuyau Tuyau;
    struct tuyau
    {
        int visible;
        int entre_hb;
        int entre_gd;
        GtkWidget *image;
     
    };
     
     
    void initimage(Tuyau tuyau[])
    {
     
        tuyau->visible = 0;
        tuyau->image = gtk_image_new_from_file("./Im9.jpg");
    }
     
     
     for(i = 0; i<36; i++)
        {
            initimage(tuyau[i]);
            (tuyau[i])->image =  gtk_button_new();
     
        }
     
        k = 0;
        for(i = 2; i<8; i++)
        {
            for(j = 0; j<6; j++)
            {
                gtk_table_attach_defaults(GTK_TABLE(table), tuyau[k],i, i+1, j, j+1);
                k++;
            }
        }
    voila donc dans un fichier .h je construit ma structure tuyau, dans mon main.c j'ai ma fonction initimage et dans ma fonction main mes trois boucle for.

    lorsque je compile avec codebloks le jeu (oui ce code provient d'un jeu ^_^) se lance mais s'arrete tout de suite avec une erreur windows "jeux.exe" a cesser de fonctionner...

    j'ai cette erreur depuis que j'ai rajouté mes boucle for.

    Quelqu'un comprend mon erreur ?

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Tu utilises un peu trop suivant le nom "tuyau".

    Tu as une structure déclarée en "tuyau". Ensuite tu as un tableau qui s'appelle "tuyau[]". Je ne peux pas t'en dire plus au regard du bout de code que tu nous fournis. Au passage lorsque tu nous donnes du code utilises les balises (le # dans la barre d'outil de l'édition des messages).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    voici mon fichier prototype.h

    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
     
    #ifndef prototype
    #define prototype
     
    #include <stdlib.h>
    #include <time.h>
    #include <gtk/gtk.h>
     
     
    typedef struct tuyau Tuyau;
    struct tuyau
    {
        int visible;
        int entre_hb;
        int entre_gd;
        GtkWidget *image;
        GtkWidget *bouton;
     
    };
     
    void initimage(Tuyau tuyau[]);
     
    #endif
    ensuite voici fonction.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    #include "prototype.h"
     
    void initimage(Tuyau tuyau[])
    {
        tuyau->visible = 0;
        tuyau->image = gtk_image_new_from_file("./Im9.jpg");
    }
    enfin voici mon main

    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
     
    #include "prototype.h"
     
     
     
    int main (int argc, char *argv[])
    {
        GtkWidget *table;
        GtkWidget *fenetre;
        GtkWidget *bout_nouveau;
        GtkWidget *bout_recommencer;
        GtkWidget *bout_terminer;
        GtkWidget *bout_quitter;
        GtkWidget *swap;
        GtkWidget *entre, *sortie;
        Tuyau *tuyau[36];
        GtkWidget *bout_tuyau[36];
        int i, j, k;
     
     
     
        gtk_init(&argc, &argv);
     
     
        fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(fenetre), 800, 800);
        gtk_window_set_title(GTK_WINDOW(fenetre), "Pipe Addict");
        g_signal_connect(G_OBJECT(fenetre), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
     
        table=gtk_table_new(9,6,TRUE);
        gtk_container_add(GTK_CONTAINER(fenetre), GTK_WIDGET(table));
     
        bout_nouveau = gtk_button_new_with_label("Nouveau");
        bout_recommencer = gtk_button_new_with_label("Recommencer");
        bout_terminer = gtk_button_new_with_label("Terminer");
        bout_quitter = gtk_button_new_with_label("quitter");
        g_signal_connect(G_OBJECT(bout_quitter), "clicked", G_CALLBACK(gtk_main_quit), NULL);
     
        swap = gtk_image_new_from_file ("./Im1.jpg");
        entre = gtk_image_new_from_file ("./Im10.jpg");
        sortie = gtk_image_new_from_file ("./Im10.jpg");
     
        for(i = 0; i<36; i++)
        {
     
            initimage(tuyau[i]);
            bout_tuyau[i] = gtk_button_new();
            gtk_container_add(GTK_CONTAINER(bout_tuyau[i]), (tuyau[i]->image));
     
        }
     
        k = 0;
        for(i = 2; i<8; i++)
        {
            for(j = 0; j<6; j++)
            {
                gtk_table_attach(GTK_TABLE(table), bout_tuyau[i],i, i+1, j, j+1,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
                k++;
            }
        }
     
     
        gtk_table_attach(GTK_TABLE(table), bout_nouveau,0, 1, 0, 1,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
        gtk_table_attach(GTK_TABLE(table), bout_recommencer,0, 1, 1, 2,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
        gtk_table_attach(GTK_TABLE(table), bout_terminer,0, 1, 2, 3,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
        gtk_table_attach(GTK_TABLE(table), bout_quitter,0, 1, 3, 4,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
        gtk_table_attach(GTK_TABLE(table), swap,0, 1, 5, 6,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
        gtk_table_attach(GTK_TABLE(table), entre,1, 2, 4, 5,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
        gtk_table_attach(GTK_TABLE(table), sortie,8, 9, 2, 3,GTK_EXPAND | GTK_FILL,GTK_EXPAND | GTK_FILL,0,0);
     
     
     
     
     
     
     
        gtk_widget_show_all(fenetre);
     
        gtk_main();
     
        return EXIT_SUCCESS;
    }
    si quelqu'un a une idée...je patauge la ^_^

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    La mémoire sur laquelle pointe tes Tuyau * (ceux de Tuyau *tuyau[36]; ) n'est jamais allouée.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    oui je sais pas pourquoi je suis allez foutre un pointeur ici....
    j'ai réglé le problème ! Merci

    autre question :
    comment faire passer ma structure dans une fonction callback ?

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Le dernier argument de la fonction g_signal_connect(); est là pour ca..

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    oui oui le gpointeur *data, mais comment l'utiliser ? si je passe carte[i] en argument ceci n'est pas un pointeur ! je peut mettre &tab[i] ? mais il parait que cela est déprécié...

  8. #8
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    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 395
    Par défaut
    &tab[i] n'a jamais été déprécié, c'est l'adresse de la case i du tableau tab. On trouve aussi parfois (plus quand on manipule des pointeurs vers des tableaux que des tableaux) l'écriture tab + i.

Discussions similaires

  1. Programme.exe a cessé de fonctionner avec GTK+
    Par Mctry dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 31/01/2013, 10h39
  2. ''explorateur exe a cessé de fonctionner ''
    Par bibiou dans le forum Windows Vista
    Réponses: 6
    Dernier message: 05/07/2008, 15h16
  3. [debutant] probleme ftp.exe
    Par Fabouney dans le forum C
    Réponses: 1
    Dernier message: 24/08/2006, 20h15
  4. Probleme GTK ? - checking for gtk-config
    Par bonano dans le forum GTK+
    Réponses: 1
    Dernier message: 20/02/2006, 19h50
  5. Réponses: 4
    Dernier message: 29/06/2005, 10h55

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