Bonjour à tous,
Je suis en train de lire le tutoriel officiel de GTK+, et une nouvelle notion a fait son apparition que j'ai du mal à comprendre.
Je ne comprend pas très bien la différence entre une fonction callback "normal", et une fonction callback avec GdkEvent comme argument. Voici un code qui provient du tuto officiel :
Ici pourquoi faut il un GdkEvent en paramètre puisque le signal "clicked" ne fait pas partie de cette structure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 gint close_application( GtkWidget *widget, GdkEvent *event, gpointer data ) { gtk_main_quit (); return TRUE; } g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (close_application), G_OBJECT (window));. Le code suivant devrait suffire, non ? (ou tout cas il fonctionne) :
Autre chose, comment empêcher un dialog de se fermer. Pas de problème vec une fenêtre, via "delete-event", mais impossible avec un dialog. J'ai regardé dans la doc et apparemment, le signal "delete-event" est désactivé lorsque le dialog est lancé (gtk_dialog_run). Quelqu'un a une solution ? Peut être que je peux forcer le signal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 gint close_application( GtkWidget *widget, gpointer data ) { gtk_main_quit (); return TRUE; g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (close_application), G_OBJECT (window)); }
Dans mon programme j'ai une structure qui contient tous les éléments nécessaire au fonctionnement de la fenêtre principale. Je passe donc cette structure à des fonctions via un pointeur que j'ai alloué avec malloc, mais j'ai vu qu'il existait également g_malloc. Quelle différence existe il entre malloc et g_malloc ? Même si j'ai besoin de cette structure tout au long du programme faut il que je la free(), ou bien le système d'exploitation le fera quand le programme sera terminé (gtk_main_quit) ?
Derniere chose, je suis assez jeune (15 ans) et dans le tutoriel en anglais il y'a souvent un mot qui revient :"handler", qui signifierait poignée, quelqu'un peut m'expliquer ce que ce mot signifie ?
Merci à ceux qui prendront le temps de ma lire.
Partager