bonjour, je débute avec gtk et je ne comprend vraiment pas comment la fonction g_signal_connect fonctionne.
g_signal_connect(G_OBJECT(MainWindow), "delete-event", G_CALLBACK( affiche_lettre ), s);
En effet je souhaite utiliser le troisième argument "s" dans ma fonction callback mais impossible.
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 :
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