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 :

Paramètres des fonctions callback


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut Paramètres des fonctions callback
    Bonjour

    Ça fait un moment que je me pose la question, que j'ai des doutes, mais depuis que j'ai intégré l'astuce proposée ici : http://www.developpez.net/forums/d13...blant-tableur/ , il n'y a plus de doute.

    Je ne comprends pas les paramètres des fonctions callbacks.
    Pourquoi parfois, on de telles différences ? Voici trois exemples de propototype :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void bord (GtkWidget *ChildWidget, cairo_t *cr);
    void GPL (GtkMenuItem *menuitem, struct widgets * _widgets);
    void sphere_nouv(GtkWidget *wid, gpointer param);
    void print_intelligence(GtkRadioAction *action, GtkRadioAction *current, gpointer param);
    Je veux biebn que le premier paramètre soit le paramètre de l'item qu ia généré l'appel. J'aurais dit que le dernier était celui défini par l"utilisateur
    En C avec une de ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtk_action_group_add_radio_actions (p_actionGroup, i_radio_entries ,  G_N_ELEMENTS (i_radio_entries), 2, (GCallback)print_intelligence, (gpointer) param);
    gtk_builder_connect_signals(widgets.builder, &widgets);
    Ou dans le fichier glade avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <signal name="activate" handler="GPL" swapped="no"/>
    Le problème, c'est que ce n'est pas le cas avec le premier exemple et que parfois, on a trois paramètres... D'où viennent ces différences ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre averti Avatar de diesel83
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2014
    Messages : 57
    Par défaut
    Bonjour,

    Dans une fonction de callback, on a autant de paramètres que l'on veut (ou presque).

    Dans le désordre :

    Le premier paramètre est un pointeur sur l'objet qui génère le signal,
    Le dernier est un pointeur permanent sur un bloc de données. Ce pointeur est attaché au moment ou le signal est attaché à la fonction de callback (ou l'inverse ? ; la fonction de callback attachée au signal),
    Les autres (ceux du milieu) sont définis lors de la déclaration du signal auprès du framework g_object par la fonction xxxx_init_class de l'objet qui produit le signal.

    Jean-Marie

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Où peut-on avoir des explications ou des exemples ? Ceci est intéressant !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Membre averti Avatar de diesel83
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2014
    Messages : 57
    Par défaut
    Vas voir le sujet "Régler une valeur numérique dans un label à l'aide d'un curseur popup" un peu plus bas.

    En page 2, dans le listing du fichier scaledvalue.c tu trouveras en ligne 186 l'appel de la fonction g_signal_new.

    Le dernier paramètre est 0. Si j'avais voulu y ajouter des données, cela aurait pu être par exemple ...G_TYPE_NONE, 1, value).

    La déclaration de la fonction de callback associée aurait alors été par exemple : cd_scaledvalue_value_changed (ScaledValue *scaledvalue, guint value, gpointer data)

    Jean-Marie

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Ces astuces ne sont pas réglables avec glade ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Membre averti Avatar de diesel83
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2014
    Messages : 57
    Par défaut
    Je ne sais pas, je n'utilise pas glade.

    Cependant, là on est dans du code de création de widgets. Je ne suis pas sûr que glade serve à grand chose.

    Jean-Marie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [emacs] Info paramètres des fonctions
    Par Cedscredi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/11/2010, 13h39
  2. Récupérer les détails des paramètres des fonctions
    Par mercure07 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/02/2009, 21h55
  3. [VB6] Dependency Walker - Voir les paramètres des fonctions
    Par snoopy69 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/02/2009, 13h34
  4. paramètres des fonctions
    Par dédé80 dans le forum C
    Réponses: 4
    Dernier message: 30/08/2007, 01h40
  5. Retrouver les valeurs des paramètres des fonctions d'une DLL
    Par Bernard Martineau dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 10h42

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