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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include <stdlib.h>
#include <gtk/gtk.h>
typedef struct test2
{
GtkWidget *button;
GtkWidget *win;
GtkWidget *win2;
GtkWidget *vbox;
gulong handler_id[3];
}test2;
void launch(test2 *new_)
{
new_->win2 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (new_->win2), 8);
gtk_window_set_title (GTK_WINDOW (new_->win2), "Hello World 2 ");
gtk_window_set_position (GTK_WINDOW (new_->win2), GTK_WIN_POS_CENTER);
/* Create the main window */
gtk_widget_show_all (new_->win2);
}
void byebye(test2 *new_)
{
gtk_widget_destroy(new_->win);
g_signal_handler_disconnect (new_->button, new_->handler_id[2]);
g_signal_handler_disconnect (new_->win, new_->handler_id[0]);
g_signal_handler_disconnect (new_->win, new_->handler_id[1]);
}
int main (int argc, char *argv[])
{
test2 *new_ = NULL;
new_ = (test2*)malloc(sizeof(test2));
/* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
/* Create the main window */
new_->win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (new_->win), 8);
gtk_window_set_title (GTK_WINDOW (new_->win), "Hello World");
gtk_window_set_position (GTK_WINDOW (new_->win), GTK_WIN_POS_CENTER);
//gtk_widget_realize (new_->win2);
new_->handler_id[0] = g_signal_connect (new_->win, "delete-event", gtk_main_quit, NULL);
new_->handler_id[1] = g_signal_connect (new_->win, "destroy", G_CALLBACK(launch), new_);
/* Create a vertical box with buttons */
new_->vbox = gtk_vbox_new (TRUE, 6);
gtk_container_add (GTK_CONTAINER (new_->win), new_->vbox);
new_->button = gtk_button_new_with_label ("byebye");
gtk_box_pack_start (GTK_BOX (new_->vbox), new_->button, TRUE, TRUE, 0);
new_->handler_id[2] = g_signal_connect (new_->button, "clicked", G_CALLBACK(byebye), new_);
/* Enter the main loop */
gtk_widget_show_all (new_->win);
gtk_main ();
return 0;
} |
Partager