Exemple de fonction de callback en gtk+

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 479 fois - Téléchargée 37 fois

Contenu du snippet

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.

A voir également

Ajouter un commentaire Commentaire
Messages postés
4
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
24 octobre 2005

merci je t'idolatre!!! tout mon menu était mort parcequ'il me manquais le cast (GtkSignalFunc) et du coup j'arrivais pas a connecter mes fonctions... bravo!

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.