frantishek wrote:
My code does it just by the book:
void setPermission(GtkWidget *window, gpointer p)
{
g_print("%s\n", (gchar*) p);
}
radio1 = gtk_radio_button_new_with_label (NULL, "First");
radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON
(radio1), "Second");
radio3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON
(radio1), "Third");
g_signal_connect_swapped (G_OBJECT (radio1), "clicked", G_CALLBACK
(setPermission), (gpointer) "Clicked 0");
g_signal_connect_swapped (G_OBJECT (radio2), "clicked", G_CALLBACK
(setPermission), (gpointer) "Clicked 1");
g_signal_connect_swapped (G_OBJECT (radio3), "clicked", G_CALLBACK
(setPermission), (gpointer) "Clicked 2");
Yet, when I select any of these radio buttons, it prints out some garbage
(the same for each button).
Any idea why?
learning_gtk wrote:
I hope to use g_signal_connect() to pass a gchar* parameter like this:
gchar* radio1= "Radio1"; //it is global variable
gchar* radio2= "Radio2";
gchar* radio3= "Radio3";
void item_radio_print1(gpointer* data)
{
g_print("This is the radio %s\n", (gchar *)data);
}
g_signal_connect(G_OBJECT(item_radio1), "activate",
GTK_SIGNAL_FUNC(item_radio_print1),
(gpointer*)radio1);
g_signal_connect(G_OBJECT(item_radio2), "activate",
GTK_SIGNAL_FUNC(item_radio_print1),
(gpointer*)radio2);
g_signal_connect(G_OBJECT(item_radio3), "activate",
GTK_SIGNAL_FUNC(item_radio_print1),
(gpointer*)radio3);
But, those strings can not be printed.
Please help me. Thanks!
Hi,
You seem to be printing out a pointer and not what the pointer is
pointing to.
If you want to print the whole string f.ex. "Radio1" you should try
with another type,
since gchar* just points to a gchar .
You could use gchar radio1[] or const gchar *radio1 since these
types are stored
differently in memory than a gchar *.
magnusm
|