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 :

Probl�me sur Structure Incluant un GTK image


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 64
    Par d�faut Probl�me sur Structure Incluant un GTK image
    voici le code de mon application, l'ex�cution ne se lance pas

    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
     
    /*       
    EXEMPLE INTERFACE GRAPHIQUE PDA
    */
     
    /* main.c */
     
     #include <gtk/gtk.h>
     #include <glib/gprintf.h> 
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     
      struct type_commande
    {
        GtkWidget *fond_image; 
        int num_commande;                             
    };
     
     typedef struct type_commande T_commande;
     
    // ***********************************************************************************************************
    // *************************************** PROGRAMME PRINCIPAL ***********************************************
    // ***********************************************************************************************************
     
     void choix(GtkWidget *B_choix , gpointer data);
     
     int main(int argc, char *argv[]){
     
     /* -------------------------DECLARATION DES VARIABLES------------------------- */ 
     
     T_commande *pictogramme= NULL;   
     
     GtkWidget *window1= NULL,               
               *vbox_fond= NULL, 
               *hbox_b1= NULL,   
               *hbox_b2= NULL,    
               *image2= NULL,   
               *picto=NULL, 
               *B_commande= NULL, 
               *B_choix= NULL;   
     
      gtk_init(&argc, &argv);
     
      /* Création de la fenêtre */
       window1 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
       gtk_window_set_title(GTK_WINDOW(window1), "Application Mac In Touch");
     
      /* Pour quitter proprement le programme lorsqu'on appuie sur la croix */
       gtk_signal_connect_object(GTK_OBJECT(window1), "destroy", (GtkSignalFunc)gtk_exit, NULL);
       gtk_signal_connect_object(GTK_OBJECT(window1), "delete_event", (GtkSignalFunc)gtk_exit, NULL);
     
      /* Redimensionnement de la fenêtre */
       gtk_widget_set_usize(GTK_WIDGET(window1), 350, 450);
     
      /* Positionnemet de la fenêtre au milieu de l'écran */
       gtk_window_set_position(GTK_WINDOW(window1), GTK_WIN_POS_CENTER);
     
      /* Création de la box de fond */                                                            
         vbox_fond = gtk_vbox_new(FALSE, 5);
         gtk_container_add(GTK_CONTAINER(window1), vbox_fond);
     
      /* Création du bouton commande */ 
        B_commande= gtk_button_new(); 
        gtk_box_pack_start(GTK_BOX(vbox_fond),  B_commande, TRUE, TRUE, 0);
        pictogramme->fond_image = gtk_image_new_from_file ("Images/agenda.png"); 
        hbox_b2=gtk_hbox_new(FALSE, 5);    
        gtk_box_pack_start (GTK_BOX (hbox_b2),pictogramme->fond_image, TRUE, TRUE, 0);
        gtk_container_add (GTK_CONTAINER (B_commande), hbox_b2);     
     
      /* Création du bouton de choix */
        B_choix= gtk_button_new(); 
        gtk_box_pack_start(GTK_BOX(vbox_fond),  B_choix, TRUE, TRUE, 0);
        image2 = gtk_image_new_from_file ("Images/Suivant.png"); 
        hbox_b1=gtk_hbox_new(FALSE, 5);    
        gtk_box_pack_start (GTK_BOX (hbox_b1), image2, TRUE, TRUE, 0);
        gtk_container_add (GTK_CONTAINER (B_choix), hbox_b1);  
     
     
       /* Connexion du signal "clicked" sur le bouton commande */
     // g_signal_connect(G_OBJECT(B_), "clicked", G_CALLBACK( ), NULL);
     
       /* Connexion du signal "clicked" sur le bouton choix */
        g_signal_connect(G_OBJECT(B_choix), "clicked", G_CALLBACK(choix),(gpointer*) pictogramme); 
     
       /* Affichage de la fenetre et de tout ce qu'elle contient */
        gtk_widget_show_all(window1);   
        gtk_main();   
        return(0);
    } 
    /***********************DECLARATION DES SOUS PROGRAMMES***********************/ 
     
      void choix(GtkWidget *B_choix , gpointer data){  
      T_commande *Infos;
     
       Infos = (T_commande*) data;
       gtk_image_set_from_file (GTK_IMAGE(Infos->fond_image),"Images/Ampoule-on.png"); 
      }

    je pense que les lignes qui merdent, sont les suivantes

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    pictogramme->fond_image = gtk_image_new_from_file ("Images/agenda.png");
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    gtk_box_pack_start (GTK_BOX (hbox_b2),pictogramme->fond_image, TRUE, TRUE, 0);
    Je pense que c'est un probl�me de pointeur du � ma structure mais je ne voit pas comment r�soudre �a, merci pour votre aide

  2. #2
    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
    J'ai l'impression que tu fais
    T_commande *pictogramme= NULL;
    suivi de pictogramme->fond_image = ...
    sans jamais allou� de m�moire pour pictogramme, �a va effectivemnet poser pb
    T_commande *pictogramme = g_new0 (T_commande, 1);
    devrait faire l'affaire

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 64
    Par d�faut
    merci sa marche, bien vu, je ne connaissait pas cette fonction,
    ce qui je trouve �trange c'est que meme en supprimant le =NULL, sa ne s'ex�cute pas, pourtant j'ai fait d'autre projet en travaillant avec des structures et je n'avais jammais ce type de probl�me, est ce du au fait que je travaille sur un gtkimage?

    en tou cas merci sa ma d�bloqu� je vais pouvoir avanc�

    See ya

  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 tu ne travailles pas sur une structure, tu travailles sur un pointeur sur une structure. A un moment ou � un autre, il faut allouer la m�moire que tu souhaites attribuer � ta structure. C'est ce que fait le g_new0 (qui pourrait tout � fait �tre remplac� par un malloc)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 64
    Par d�faut
    ok, dans la ligne de commande g_new0 (T_commande,1)
    le 1 correspond � la taille ??
    1 octet?

    Merci pour ces pr�cisions

  6. #6
    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
    Non, �a veut dire qu'il faut allouer 1 objet de type T_commande, ie 1 * sizeof (T_commande) octets

Discussions similaires

  1. [GD] Probl�me police opentype sur g�n�ration de texte en image
    Par Sseubb dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 29/03/2007, 17h03
  2. Probl�me d'espace sur IE menu vertical avec image de fond
    Par dom dom from the dom dans le forum Mise en page CSS
    R�ponses: 2
    Dernier message: 09/03/2007, 11h30
  3. R�ponses: 5
    Dernier message: 09/09/2006, 23h49
  4. [Structures]Probl�me sur structures
    Par kendras dans le forum C++
    R�ponses: 5
    Dernier message: 07/06/2006, 10h20
  5. R�ponses: 9
    Dernier message: 01/06/2006, 08h01

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