Un exemple de fonction de rappel. Ces fonction au protoype un peut special sont appeles lorsque un evenement se produit sur un widget.
Source / Exemple :
// callbacks.c
// exemple d'utilisation des fonction de callbaks
//
//
#include <gtk/gtk.h>
// variable global
gint count = 0;
void callback(GtkWidget *Widget, gpointer *Data)
{
count++;
gtk_label_set_text(GTK_LABEL(Data), g_strdup_printf("Vous avez clike : %d foi\n", count));
g_print("Vous avez clike : %d foi\n", count);
}
int main(int argc, char *argv[])
{
GtkWidget *Window, *Label, *BoutonFermer, *BoutonTest, *Vbox;
gtk_init(&argc, &argv);
Window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // cree une fenetre
gtk_window_set_title(GTK_WINDOW(Window), "exemple de callbacks"); //y donne un titre
Vbox = gtk_vbox_new(FALSE, 3); // creation de la vbox
gtk_container_add(GTK_CONTAINER(Window), Vbox); // l'ajoute dans la fenetre
Label = gtk_label_new("Exemple sur les fonctions de callback\n(fonction de rappel)");
gtk_box_pack_start_defaults(GTK_BOX(Vbox), Label); // ajoute le widget dans la vbox
BoutonTest = gtk_button_new_with_label("Test"); // cree le bouton
gtk_signal_connect(GTK_OBJECT(BoutonTest), "clicked", GTK_SIGNAL_FUNC(callback), Label);
gtk_box_pack_start_defaults(GTK_BOX(Vbox), BoutonTest); // ajoute le widget dans la vbox
BoutonFermer = gtk_button_new_with_label("Fermer"); // cree le bouton
// cette fonction appel la fonction gtk_exit(); qui sort du programme des que l'evenement "clicked"
// survient (qd vous appuyez sur le bouton fermer).
gtk_signal_connect_object(GTK_OBJECT(BoutonFermer), "clicked", (GtkSignalFunc)gtk_exit, NULL);
gtk_box_pack_start_defaults(GTK_BOX(Vbox), BoutonFermer); // ajoute le widget dans la vbox
gtk_widget_show_all(Window); // affiche tout les widgets
gtk_main();
return(0);
}
Conclusion :
je n'est pas la liste de tout les evenements. mais vous pouvez alle sur www.gimp.org pour trouver le tutorial sur le GTK+, qui vous donneras plein d'info sur le evenements supporte par chaque widget.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.