// Cliquer sur un boutton crée une nouvelle fenêtre avec un boutton qui ferme // la nouvelle fenêtre. #include <gtk/gtk.h> GtkWidget *creer_une_Fenetre(gchar* caption, guint Width, guint Height) { GtkWidget *fen; fen = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(fen), Width, Height); gtk_window_set_title (GTK_WINDOW (fen), caption); return fen; } GtkWidget *creer_un_Bouton(gchar* caption, GtkWidget *fenetreParent) { GtkWidget *bouton = gtk_button_new_with_label (caption); gtk_container_add (GTK_CONTAINER (fenetreParent), bouton); gtk_widget_show (bouton); return bouton; } static void Bouton2_Cliqued( GtkWidget *widget, gpointer data ) { g_print ("Destruction fenetre 2.\n"); gtk_widget_destroy (GTK_WIDGET(data)); } static void Bouton_Cliqued( GtkWidget *widget, gpointer data ) { g_print ("Creation de la fenetre 2.\n"); GtkWidget *fen2 = creer_une_Fenetre("Fenetre 2", 400, 200); GtkWidget *button = creer_un_Bouton("Fermer", fen2); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (Bouton2_Cliqued), fen2); gtk_widget_show (fen2); } int main( int argc, char *argv[] ) { GtkWidget *fen1, *button; gtk_init (&argc, &argv); fen1 = creer_une_Fenetre("fenetre 1", 200, 300); g_signal_connect(G_OBJECT(fen1),"destroy",G_CALLBACK(gtk_main_quit),NULL); button = creer_un_Bouton("Creer une fenetre", fen1); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (Bouton_Cliqued), NULL); gtk_widget_show (fen1); gtk_main (); return 0; }