| 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
 
 |  
typedef struct{
        int x;
        int y;
 
/* ...autre variable ... */
 
        }position;
 
 
void OnDestroy(GtkWidget *pWidget, gpointer* pData)
{
    gtk_main_quit();
}
 
 
void fct(GtkWidget *widget, gpointer Data)
{
    GtkWidget *pAbout;
    GtkWidget *Fenetre;
 
position* ba=(position*) Data;
   gint i = (gint)ba->x;
    gint j = (gint)ba->y;
 
  Fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    pAbout = gtk_message_dialog_new (GTK_WINDOW(Fenetre),
        GTK_DIALOG_MODAL,
        GTK_MESSAGE_INFO,
        GTK_BUTTONS_OK,
        "Clicked : %d-%d",
        i,j);
 
    gtk_dialog_run(GTK_DIALOG(pAbout));
    gtk_widget_destroy(pAbout);
 
}
 
 
 
int main(int argc,char **argv)
{
 
 
    GtkWidget *window;
    GtkWidget *button[2][2];
    GtkWidget *tablo;
    GtkWidget *hbox;
 
    gint a,b;
 
    position ab;
 
    gtk_init(&argc,&argv);
 
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
hbox = gtk_hbox_new(TRUE, 0);
    gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(hbox));
 
    tablo = gtk_table_new(2,2,TRUE);
    gtk_container_add(GTK_CONTAINER(hbox), GTK_WIDGET(tablo));
 
    for(a=0;a<2;a++)
    for(b=0;b<2;b++)
    {
    button[a][b] = gtk_button_new();     	 
       ab.x=a;
       ab.y=b;
       g_signal_connect(G_OBJECT( button[a][b] ), "clicked", G_CALLBACK(fct), &ab );
 
       gtk_table_attach(GTK_TABLE(tablo),button[a][b], a , a+1,b , b+1,0,0,0, 0);  
 
    }
 
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(OnDestroy), NULL);
 
    gtk_widget_show_all(window);
 
 
    gtk_main();
 
    return EXIT_SUCCESS;
} | 
Partager