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 :

passage de variable


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par défaut passage de variable
    Bonjour,

    Voici un exemple de 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
     
    void affichage ()
    {
       struct truc
       {
          GtkWidget *var_1;
          GtkWidget *var_2;
       } NV;
       blabla...
       g_signal_connect (G_OBJECT(Btn_valider),
                               "clicked",
                               G_CALLBACK(machin),
                               &NV);
       blabla...
    }
     
    void machin(GtkWidget * widget, gpointer data)
    {
       récupération des variables de la structure truc
    }
    j'aimerai connaitre la méthode pour récupérer les données des widgets var_1 et var_2 de la structure truc. Pour les utilisées dans la fonction machin


    merci d'avance....

  2. #2
    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
    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
    struct truc
    {
          GtkWidget *var_1;
          GtkWidget *var_2;
    }
     
    void affichage ()
    {
       struct truc NV;
       blabla...
       g_signal_connect (G_OBJECT(Btn_valider),
                               "clicked",
                               G_CALLBACK(machin),
                               &NV);
       blabla...
    }
     
    void machin(GtkWidget * widget, gpointer data)
    {
       struct truc *t = data;
       t->var_1;
       t->var_2;
    }

  3. #3
    Membre averti
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Par défaut
    désolé pour le manque d'information de ma part mais j'ai oublié d'indiquer que le code était sur plusieurs fichiers voici donc le récapitulatif :

    affichage.c
    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
     
    void affichage ()
    {
       struct truc
       {
          GtkWidget *var_1;
          GtkWidget *var_2;
       } NV;
       blabla...
       g_signal_connect (G_OBJECT(Btn_valider),
                               "clicked",
                               G_CALLBACK(machin),
                               &NV);
       blabla...
    }
    recuperation.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void machin(GtkWidget * widget, gpointer data)
    {
       récupération des variables de la structure truc
    }
    j'ai suivi les modifications pour le code mais j'obtiens cette erreur :

    dereferencing pointer to incomplete type


    La structure se trouve en dehors de la fonction affichage ?
    Est-ce logique, ne devient-elle pas une variable globale ?

  4. #4
    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
    Tu confonds déclaration de type et de variable. Ton type doit être déclaré en dehors de ta fonction, de manière à être visible partout dans le fichier.

    Pour ta variable, tu fais bien de le noter vu que je me suis trompé en la laissant locale... Elle ne doit pas forcément être globale, mais il faut que sa durée de vie soit au moins égale à celle de ton programme, vu que lorsque ta callback sera appelée, cette zone mémoire doit toujours exister. Hors ce n'est pas le cas dans ton code. NV est une variable locale, elle sera donc détruite en sortant de ta fonction affichage. Pour que ta callback puisse y accéder, elle doit toujours exister à ce moment là, et être soit globale (ou statique, c'est à dire globale pour un unique fichier), ou locale avec une durée de vie suffisante (par exemple locale à la fonction main), ou déclarée dynamiquement.

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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