1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2013
    Messages : 72
    Points : 50
    Points
    50

    Par défaut Utilisation de la fonction "gtk_timeout_add"

    Bonjout tout le monde :
    je travail avec gtk+-2.0 sous linux.
    je veux insérer une fonction dans mon programme qui me permet de le changer périodiquement, donc j'ai choisi d'utiliser "gtk_timeout_add".
    Première question : est ce que c'est la milleure fonction pour un tel object ?
    car j'ai vu qu'il existe une autre g_timeout_add.
    j'ai fait dans ma fonction main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_timeout_add (500, fonction_de_changement, &data);
    le fonction qui va faire le changement nécessaire est faite comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gint fonction_de_changement (Widget *data)
    {
    // les changements;
    return 0;
    }
    le type Widget est une structure.
    Bon, quand je compile le programme je reçois le message suivant : note: expected ‘GtkFunction {aka int (*)(void *)}’ but argument is of type ‘gint (*)(Widget *) {aka int (*)(struct Widget *)}’
    je pense que je n'ai pas écrit la fonction gtk_timeout_add de la manière la plus appropriée !
    Corrigez la moi s'il vous plaît, j'ai besoin de votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2009
    Messages
    1 341
    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 341
    Points : 2 039
    Points
    2 039

    Par défaut

    Bonjour,

    la documentation de gtk_timeout_add indique qu'il ne faut plus l'utiliser, il faut utiliser g_timeout à la place. Je te conseille d'installer devhelp, le navigateur de documentation, qui te permettra d'avoir toujours la documentation adaptée à la version de GTK+ installée sur ton système. Ou sinon tu as la documentaion en ligne.

    De plus, g_timeout_add prend en 2ème argument une GSourceFunc, or ta callback fonction_de_changement ne respecte pas la signature attendue: elle devrait renvoyer un gboolean, pas un gint. Sur le papier, ça fait la même taille, mais sémantiquement, ça n'a pas du tout le même sens. Tu dois renvoyer TRUE pour que la callback continue d'être appelée, et FALSE pour arrêter. Mais je te conseille de préférer les valeurs G_SOURCE_CONTINUE et G_SOURCE_REMOVE qui sont plus compréhensibles.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

Discussions similaires

  1. [LG]Utilisation de la fonction time
    Par kmitz dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2005, 13h05
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

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