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 :

Appel de fonction


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut Appel de fonction
    Bonjour la communauté,

    J'ai un petit problème de C/GTK

    Voilà, j'ai créé une fonction toute bete qui permet de faire quelques trucs sur plusieurs widgets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Appel(GtkWidget * Bouton, GtkWidget * TextView, GtkWidget * Entry, GtkWidget * ComboBox)
    Donc ceci est sa déclaration.

    Cependant, je n'arrive pas à l'appeler dans le programme principal... Ce que je voudrais, c'est l'appeler lorsque je clique sur un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_signal_connect(G_OBJECT(Bouton), "clicked", G_CALLBACK(Appel), NULL);
    J'ai pensé à ça, mais ça ne marche pas du tout...

    Pourriez-vous m'aider svp !!
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ca ne risque pas de marcher, l'appel à g_signal_connect c'est pour des callback et ta fonction n'en à pas la signature, signature qu'il faut respecter pour chaque signaux !

    Ce que je te conseil, si tu dois modifier/traiter plusieurs widgets dans la même fonction, c'est de les mettre dans une structure puis de passer l'adresse de cette structure en dernier argument de la fonction g_signal_connect, ceci passera ta structure dans le dernier argument de type gpointer du callback.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    Salut,

    Si j'ai bien compris, dans mon cas je créé une structure qui regroupe Bouton, Entry, TextView et ComboBox, et lorsque je fais mon g_signal_connect, j'appelle la fonction et je passe la structure en argument...

    Suis-je proche de la solution ?

    merci d'avance

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par C_Chaou
    Salut,

    Si j'ai bien compris, dans mon cas je créé une structure qui regroupe Bouton, Entry, TextView et ComboBox, et lorsque je fais mon g_signal_connect, j'appelle la fonction et je passe la structure en argument...

    Suis-je proche de la solution ?

    merci d'avance
    Oui c'est ca, en admettant que tu as une structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct
    {
       /* Tes widgets ici... */
    }
    widget_st;
     
    widget_st st;
    Ton enregistrement du callback serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_signal_connect(G_OBJECT(Bouton), "clicked", G_CALLBACK(Appel), (gpointer) & st);
    A l'intérieur de ton callback il te suffit de récupérer un pointeur du ype de ta structure par rapport à l'argument gpointer data comme ceci:
    Le reste bin tu vois
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 20/04/2004, 14h54
  2. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  3. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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