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 :

callback avec plusieurs arguments


Sujet :

GTK+ avec C & C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut callback avec plusieurs arguments
    bonjour, revoilà la développeuse du dimanche..

    alors voilà, je cherche à recharger une image après un zoom par exemple.
    pour ça, je veux cliquer sur un joli bouton pRestore et lui joindre un tout aussi joli signal.
    le problème c'est dans ma connexion de signal, j'ai besoin de plusieurs arguments, de deux pour être exacte: une chaîne de caractère sTexte pour récupérer l'adresse originelle de l'image sur laquelle on travaille et une image pImage.

    alors, moi je fais ça pour ma connexion de signal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef struct
    {
    gchar texte[200];
    GtkImage *pImage2;
    }parametres;
     
    parametres p= {&sTexte, pImage};
     
    g_signal_connect(G_OBJECT(pRestore), "clicked", G_CALLBACK(restore),&p);
    et la fonction restore en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void  restore (GtkButton *button, gpointer data) 
    {
    parametres *p_local=(parametres *)data;
    p_local->pImage2 = gtk_image_new_from_file(p_local->texte);
    }
    ça compile, mais ça donne ..rien.
    quelqu'un, de l'aide, par pitié, siouplé?

  2. #2
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Il n'y a pas à ma connaissance de moyen de mettre plusieurs arguments. Le seul moyen est - comme tu l'as fait - d'avoir une structure dont les champs sont tes paramètres.
    Si ça ne marche pas c'est que la vérité est ailleurs.
    Est-ce que ton image est bien montrée (fonctions show_*) ? Est-ce qu'elle est bien ajoutée à un conteneur dans la fenêtre ?
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

  3. #3
    Nouveau membre du Club
    Profil pro
    responsable de développement
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : responsable de développement

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Points : 34
    Points
    34
    Par défaut
    Salut, c’est bientôt Noël*

    J’imagine que ton pb. vient du fait que ta belle structure n’est pas alloué dynamiquement, et donc n’existe plus quand la fonction de callback… Mais normalement tu devrais avoir un beau plantage*??
    Sinon fait un strcpy déjà… et faudrait sûrement mettre à jour le widget (image) et le réafficher non*?

    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
     
    typedef struct {
      gchar texte[200];
      GtkImage *pImage2;
    } parametres;
     
    void makeInterface() {
    // ...
      parametres *pp= (parametres*)malloc(sizeof(parametre));
      if (NULL == pp) then Boumm!
      strncpy(pp->texte, sTexte);
      pp->pImage2 = pImage;
     
      g_signal_connect(G_OBJECT(pRestore), "clicked", G_CALLBACK(restore),pp);
     // ...
    }
     
    void  restore (GtkButton *button, gpointer data) 
    {
      parametres *p_local=(parametres *)data;
      p_local->pImage2 = gtk_image_new_from_file(p_local->texte);
      gtk_widget_show( unwidgetarafraichir );
    }
    Peut-être autre chose*? Faut en dire plus dans ce cas

Discussions similaires

  1. [Prototype] Ajax.Request et onSuccess : appel de fonction avec plusieurs arguments
    Par gregbond dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 18/10/2012, 17h00
  2. [XL-2003] Fonction 'like' avec plusieurs arguments
    Par bdoux33 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/05/2009, 14h44
  3. Réponses: 1
    Dernier message: 03/06/2008, 10h21
  4. somme avec plusieurs arguments
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/05/2007, 19h12
  5. switch avec plusieurs arguments
    Par lazzeroni dans le forum Langage
    Réponses: 4
    Dernier message: 18/07/2006, 13h34

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