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+ Discussion :

récuperer des scrollbars dans un callback


Sujet :

GTK+

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut récuperer des scrollbars dans un callback
    Bonjour à tous,

    Je voudrais utiliser trois Scrollbars pour fixer une valeur. Les scrollbars auraient des échelles plus ou moins grandes pour augmenter la sensibilité de la valeur. Une fonction callback récupérerait les adjustments des scrollbars pour en faire la somme et la renvoyer dans un label.

    Lorsque j’essaye de passer les adjustments et le label dans un paramètre par une structure, je bloque pour les récupérer dans la fonction callback. Je pense que le problème doit se situer au niveau des paramètres de la fonction callback. Je n’ai aucune idée de ce que sont les deux premiers paramètres. J’ai lu pas mal de tutoriaux, mais je n’arrive pas faire le lien avec mon problème. Il y’a sûrement quelque chose qui m’a échappé c’est pourquoi j’ai posté mon problème.

    Un peu de code pour clarifier :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    //structure a faire passer en parametre 
    typedef struct{	
    	GtkObject *Small;
    	GtkObject *Medium;
    	GtkObject *Large;
    	GtkWidget *sLabel;
    }SAdjust;
     
    //definition de la structure et intialisation dans la fonction main.
    SAdjust Adjust;
     
    Adjust.Large=gtk_adjustment_new(0, 0, 50, 5, 0, 0);
    	Adjust.Medium=gtk_adjustment_new(0, 0, 500, 50, 50, 0);
    	Adjust.Small=gtk_adjustment_new(0, 0, 27000, 500, 500, 0);
    	Adjust.sLabel=gtk_label_new("");
     
    //connection des signaux a la fonction callback
    	gtk_signal_connect(GTK_OBJECT(Adjust.Large),"value-changed",G_CALLBACK(weight),&Adjust);
    	gtk_signal_connect(GTK_OBJECT(Adjust.Medium),"value-changed",G_CALLBACK(weight),&Adjust);
    	gtk_signal_connect(GTK_OBJECT(Adjust.Small),"value-changed",G_CALLBACK(weight),&Adjust);
     
    //fonction callback, je lutte surtout avec les deux premiers parametres
    void weight(GtkWidget*widget,GdkEventScroll *event,SAdjust *Adjust)
    {
    gchar* sLabel;
    gint iValue;
     
    iValue=gtk_adjustment_get_value(GTK_ADJUSTMENT(Adjust->Small));
    sLabel = g_strdup_printf("%d", iValue);
    gtk_label_set_text(GTK_LABEL(Adjust->sLabel), sLabel);
    g_free(sLabel);
    }
    Je bosse a moitié en autodidacte donc tous vos conseils seront les bienvenus. Si vous préférez que je copie mon code, c’est possible. J’ai fais cette présentation car elle me semble la plus synthétique.

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 303
    Points : 4 967
    Points
    4 967
    Billets dans le blog
    5
    Par défaut
    Le problème que tu rencontres est assez classique. Tu déclares une variable dans la pile. Tu transmets le pointeur de cette variable à une autre fonction. Le problème est que lors de l'exécution de ton programme cette variable n'existe plus lorsque tu la traites dans la fonction CALLBACK. Essaies plutôt d'allouer cette variable dans le tas en utilisant g_malloc() par exemple et vois si ça ne s'améliore pas. N'oublie pas bien sûr dans ce cas de désallouer cette variable avec un g_free(); une fois son utilisation terminée.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci gerald3d d'avoir repondu si vite.

    J'ai pris pas mal de temps mais cela semble fonctionner.
    Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/07/2010, 10h22
  2. problème de récuperation des données dans l'url
    Par leclone dans le forum Langage
    Réponses: 8
    Dernier message: 13/03/2007, 11h20
  3. Récuperation des donnees dans un fichier .csv
    Par HMorvan dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 23h27
  4. Réponses: 2
    Dernier message: 19/01/2006, 19h58
  5. [JSP][BEAN]Récuperer des Beans dans un ArrayList
    Par Jones dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/08/2004, 12h22

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