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.