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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| #include <stdlib.h>
#include <gtk/gtk.h>
#include <glib/gprintf.h>
typedef struct
{
gchar abc;
gchar def;
GtkWidget * ghi;
}
Test;
static void cb_remplir (GtkWidget * widget, gpointer data)
{
Test * test = (Test *) data;
test->abc = 1;
test->def = 2;
test->ghi = widget;
}
static void cb_lire (GtkWidget * widget, gpointer data)
{
Test * test = (Test *) data;
g_printf ("test->abc = %d\n", test->abc);
g_printf ("test->def = %d\n", test->def);
g_printf ("test->ghi = %p\n", test->ghi);
}
int main (int argc, char ** argv)
{
GtkWidget * p_win = NULL;
GtkWidget * p_vbox = NULL;
GtkWidget * p_btn [2];
Test test;
/*
* Initialize GTK+
*/
gtk_init (& argc, & argv);
/*
* Create the main window
*/
p_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (p_win), "Hello, GKT+ !");
gtk_window_set_default_size (GTK_WINDOW (p_win), 200, 75);
gtk_container_set_border_width (GTK_CONTAINER (p_win), 5);
gtk_window_set_position (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
gtk_widget_realize (p_win);
g_signal_connect (p_win, "destroy", gtk_main_quit, NULL);
/*
* Create a vertical box and buttons
*/
p_vbox = gtk_vbox_new (TRUE, 5);
gtk_container_add (GTK_CONTAINER (p_win), p_vbox);
p_btn [0] = gtk_button_new_with_label ("Remplir la structure");
gtk_box_pack_start (GTK_BOX (p_vbox), p_btn [0], TRUE, TRUE, 5);
g_signal_connect (
G_OBJECT (p_btn [0]),
"clicked",
G_CALLBACK (cb_remplir),
&test
);
p_btn [1] = gtk_button_new_with_label ("Lire la structure");
gtk_box_pack_start (GTK_BOX (p_vbox), p_btn [1], TRUE, TRUE, 5);
g_signal_connect (
p_btn [1],
"clicked",
G_CALLBACK (cb_lire),
&test
);
/*
* Enter the main loop
*/
gtk_widget_show_all (p_win);
gtk_main ();
return EXIT_SUCCESS;
} |
Partager