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 :

Fonctions CallBack et param�tre


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par d�faut Fonctions CallBack et param�tre
    Bonjour,
    J'utilise une boucle pour me g�n�rer un gtk_table contenant les informations de client et je voudrais rajouter un bouton sur chaque ligne pour supprimer un client.
    J'ai donc attach� un bouton
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    gtk_signal_connect_object(GTK_OBJECT(bmodifier), "clicked", G_CALLBACK(supprimerClient(listeclient,positionclient)), NULL);
    et ma fonction supprimerClient supprime le client � la position "positionclient"
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    void supprimerClient (listeClient* a,int nnum)
    {
        ..
    }
    Cependant avec GTK j'ai cru comprendre qu'on ne pouvait pas appeler nos propre fonction comme �a et qu'il fallait mettre des fonctions de ce type :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    void supprimerClient (GtkWidget *widget, gpointer data)
    {
       ...
    }
    Sauf que dans une fonction de ce type, que j'arrive � appeler, comment r�cup�rer ma liste de client, et surtout le num�ro du client � supprimer ?

    Merci d'avance.

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

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

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    Le prototype de la fonction CallBack est fonction du signal et du widget qui l'�met. En utilisant la doc. officielle on peut facilement acc�der � ce prototype.

    Par exemple, pour le signal "clicked" d'un GtkButton le prototype est le suivant : void user_function (GtkButton *button, gpointer user_data);.

    Ensuite, si tu attaches ce callback � chaque bouton, tu r�cup�res dans la fonction le pointeur du bouton qui a �mit le signal. C'est le primer pointeur du prototype (ici GtkButton *button).
    Pour r�cup�rer ta listclient, il suffit de la transmettre lors de l'attachement du callback avec le signal. C'est le dernier param�tre. Je te donne la ligne de code correctement �crite, sachant que la tienne ne peut pas fonctionner en l'�tat :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    g_signal_connect_object(GTK_OBJECT(bmodifier), "clicked", G_CALLBACK(supprimerClient), listclient);
    Il reste encore un petit probl�me. Comment transmettre le num�ro du client. Deux solutions possibles :
    1. tu incorpores cette information dans la structure listclient,
    2. tu utilises un pointeur libre attach� � tous les widgets que tu initialises � la bonne valeur.

    La deuxi�me solution est assez peu utilis�e car elle rend la lecture du code assez obscure. On a du mal � savoir d'o� viennent les donn�es de prime abord. Les GtkWidget h�ritent des GObject. Ces derniers ont un pointeur que nous appellerons "data" libre auquel on peut attacher ce que l'on veut.
    Pour se faire on utilise les fonctions
    Si tu d�sires attacher � chaque bouton un nombre, tu peux utiliser la macro GINT_TO_PRINTER() et inversement GPOINTER_TO_INT();.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 33
    Par d�faut
    Parfait, merci !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Param�tres des fonctions callback
    Par troumad dans le forum GTK+ avec C & C++
    R�ponses: 13
    Dernier message: 31/03/2015, 14h55
  2. ob_start et param�tres de la fonction callback
    Par CaviarNAS dans le forum Langage
    R�ponses: 4
    Dernier message: 16/02/2012, 09h07
  3. R�ponses: 3
    Dernier message: 29/11/2011, 20h25
  4. [son]param�tre "len" de la fonction callback.
    Par troumad dans le forum SDL
    R�ponses: 6
    Dernier message: 08/12/2009, 11h31
  5. Param�tres dans les fonctions callback
    Par kelepoc dans le forum GTK+ avec C & C++
    R�ponses: 2
    Dernier message: 24/07/2009, 01h09

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