Witam
To mój pierwszy program z graficznym interfejsem, napisałem funkcje tworzącą jedną tabele (do gry w statki) :
void pisz(int i,int j)
{
g_print("Zniszczono przycisk %d %d\n",i,j);
}
void tworz_tabele(GtkWidget **tabela)
{
GtkWidget *button;
int i, j;
*tabela = gtk_table_new(11,11,1);
char znak1[]="@", znak2[]="0 ";
for(i=0;i<11;i++)
for(j=0;j<11;j++)
{
if((i==0)&&(j!=0))
{
znak1[0]=znak1[0]+1;
button=gtk_button_new_with_label(znak1);
}
else if((i!=0)&&(j==0))
{
znak2[0]=znak2[0]+1;
if(znak2[0]==':')
{
znak2[0] = '1';
znak2[1] = '0';
}
button=gtk_button_new_with_label(znak2);
}
else
{
button = gtk_button_new();
gtk_signal_connect_object(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(pisz(i,j)),NULL); //pokazuje błąd
} //nie moge przekazac parametrow funkcji
gtk_table_attach(GTK_TABLE(*tabela),button,i,i+1,j,j+1,GTK_FILL,GTK_FILL,1,1);
gtk_widget_show(button);
}
gtk_widget_show(*tabela);
}
Problem polega na tym że nie wiem jak sprawić aby po wciśnięciu guzika przekazał on do funkcji którą wywoła numer wiersza i kolumny w której się znajduje. Próbowałem to zrobić tak ja to jest w kodzie ale kompilator tego nie przyjmuje.
Oraz czy mógł by mi ktoś powiedzieć jak usunąć przycisk który zostanie wciśnięty(żeby potem dodać w to miejsce nowy z etykietom (czy pod przyciskiem krył się statek czy nie) .
Do usunięcia przycisku chciałem użyć funkcji wywołanej przez ten przycisk, czyli sprawdzić czy jest statek, usunąć przycisk, wpisać nowy ale nie moge znaleŹć żadnej funkcji w stylu delete(button); ani też przekazać wskaźnika na przycisk, jego pozycji w tabeli żeby na to miejsce wstawić nowy.