Bonjour tout le monde :
J'ai besoin d'envoyer plusieurs argument à travers la fonction callback, c'est ainsi que j'ai pensé de faire un test pour vérifier cette manipulation.
J'ai fait ce programme :
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
34
35
#include <stdio.h>
#include <gtk/gtk.h>
typedef struct dat dat;
struct dat 
{
		int i;
		int j;
};
void func_callback (dat *number)
{
		printf ("%d %d\n", number->i, number->j);
}
void func_normal (dat *number)
{
		printf ("%d %d\n", number->i, number->j);
}
int main (int argc, char **argv)
{
		GtkWidget *window;
		GtkWidget *button;
		dat data;
		gtk_init (&argc, &argv);
		window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
		gtk_window_set_title (GTK_WINDOW(window), "struct_test");
		gtk_window_set_default_size (GTK_WINDOW(window), 700, 700);
		button = gtk_button_new_with_label ("button");
		data.i = 10;
		data.j = 20;
		func_normal (&data);
		g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(func_callback), &data);
		gtk_container_add (GTK_CONTAINER(window), button);
		gtk_widget_show_all (window);
		gtk_main();
		return 0;
}
dans le terminal je vois des résultats différents, la fonction callback reçoit le pointeur de structure d'une manière différente qu'une autre fonction normale !
la fonction normale donne le résultat attendu, 10 et 20, alors que la première fonction donne des nombres aléatoires.
Pourquoi ?
Quelle est la solution pour envoyer plusieurs argument à une fonction callback ?
Merci pour votre réponse.
Merci pour votre temps que vous avez accordé à mon sujet.