bonjour, je débute avec gtk et je ne comprend vraiment pas comment la fonction g_signal_connect fonctionne.
En effet je souhaite utiliser le troisième argument "s" dans ma fonction callback mais impossible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part g_signal_connect(G_OBJECT(MainWindow), "delete-event", G_CALLBACK( affiche_lettre ), s);
En faisant deux printf ( je sais c pas bien faut utiliser le débugger ), l'un dans ma fonction appellante et un autre dans la fonction appellée par g_signal_connect(), je me rend compte que le pointeur transmit en troisieme argument à g_signl_connect et celui que je récupère dans ma callback ne sont pas les mêmes, je vien de me faire les 4 première pages de google et je comprend pas pourquoi ca marche pas chez moi.
Voici mon code :
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 void affiche_lettre(GtkWidget * widget, gpointer data) { printf("callback : %p %s\n",data,(char *)data); gtk_main(); } int main(int argc, char **argv) { /* Variables */ GtkWidget * MainWindow = NULL; /* Initialisation de GTK+ */ gtk_init(&argc, &argv); /* Création de la fenêtre */ MainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); char * s="toto"; printf("main : %p %s\n",s,s); g_signal_connect_(G_OBJECT(MainWindow), "delete-event", G_CALLBACK( affiche_lettre ),s ); /* Affichage et boucle événementielle */ gtk_widget_show_all(MainWindow); gtk_main(); /* Fermeture de GTK+ */ gtk_exit(EXIT_SUCCESS); return EXIT_SUCCESS; }des idées ?
Partager