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 97 98 99 100 101 102 103 104 105
   | #include <stdlib.h>
#include <gtk/gtk.h>
 
 
typedef struct
{
    int        i;
    int        j;
    int        n;
    GtkWidget *pTable;
    GtkWidget *pButton;
}SJeu;
 
void afficher_image(GtkWidget* pTable, SJeu *Jeu1);
 
 
int main(int argc, char **argv)
{
	GtkWidget *pWindow;
	GtkWidget *pTable;      // Table bouton
	int i=0, j=0, n=20;
	SJeu      Jeu1[n*n];               // Donnée du jeu
//	GtkWidget *pButton[(n*n)];
	GtkWidget *pImage[n*n];  // Table bouton
 
	//int x=1;
	//int *D;  test pointeur entier
	//D=&x;    
 
	gtk_init(&argc, &argv);
 
	/* Creation de la fenetre */
	pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(pWindow), "Demineur");
	gtk_window_set_default_size(GTK_WINDOW(pWindow), n*10, n*10);
	g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
	/* Creation et insertion de la table n lignes n colonnes */
	pTable=gtk_table_new(n,n,TRUE);
	gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
 
	/* Creation des boutons */
/*	for (i=0; i<(n*n); i++) 
	{
		pButton[i] = gtk_button_new();
	}
*/
 
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			/* n*i donne 0 au premier passage, n au deuxième, 2*n au troisième, etc.
			* 0+j = 0 au premier passage, 1 au deuxième, etc. */
			Jeu1[j+(n*i)].i=i;
			Jeu1[j+(n*i)].j=j;
			Jeu1[j+(n*i)].n=n;
			Jeu1[j+(n*i)].pTable=pTable;
			Jeu1[j+(n*i)].pButton=gtk_button_new();
 
			gtk_table_attach_defaults (GTK_TABLE(pTable), Jeu1[j+(n*i)].pButton, j, j+1, i, i+1);
			pImage[n*i+j] =gtk_image_new_from_file(".\\Images\\case.jpg");
			gtk_container_add(GTK_CONTAINER(Jeu1[j+(n*i)].pButton), pImage[n*i+j]);
 
			g_signal_connect(G_OBJECT(Jeu1[j+(n*i)].pButton), "clicked", G_CALLBACK(afficher_image), &Jeu1);
		}
	}
 
 
	gtk_widget_show_all(pWindow);
	gtk_main();
 
	return EXIT_SUCCESS;
}
 
 
void afficher_image(GtkWidget* pButton, SJeu *Jeu1)
{
	//int x=1;
	//D=&x;                  test pointeur d'entier
	//printf("%d\n",*D);
 
	GtkWidget* pImage[200];
	GtkWidget *pTable=Jeu1->pTable;
	GList *ButtonList=gtk_container_get_children(GTK_CONTAINER(pTable));
	GList *list=g_list_first(ButtonList);
	int compteur=(Jeu1->n*Jeu1->n)-1;
 
while (list)
{
	if (pButton==(GtkWidget*)list->data)
	{
		g_print("%d,%d,%d\n", Jeu1[compteur].i, Jeu1[compteur].j, Jeu1[compteur].n);
		break;
	}
	list=g_list_next(list);
	compteur--;
}
 
 
	pImage[compteur] = gtk_image_new_from_stock(GTK_STOCK_ABOUT, GTK_ICON_SIZE_MENU);
	gtk_button_set_image                (GTK_BUTTON(pButton), pImage[compteur]);
//	gtk_table_attach_defaults(GTK_TABLE(pTable), pImage[(Jeu1->n)*(Jeu1->i)+(Jeu1->j)], (Jeu1->j), (Jeu1->j)+1, (Jeu1->i), (Jeu1->i)+1);
 
} |