| 12
 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