当前位置: 技术问答>linux和unix
gtk 中回调函数传值问题
来源: 互联网 发布时间:2015-06-26
本文导语: 程序如下: void press(GtkWidget * widget, GdkEvent * event, gpointer data) { g_print("Output: %s n",(gchar *) data); } int main(int argc, char * argv[]) { GtkWidget * button; ... button = gtk_button_new_with_label("OK"); gtk_s...
程序如下:
void press(GtkWidget * widget, GdkEvent * event, gpointer data)
{
g_print("Output: %s n",(gchar *) data);
}
int main(int argc, char * argv[])
{
GtkWidget * button;
...
button = gtk_button_new_with_label("OK");
gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(press),
(gpointer) ("Hello World"));
gtk_widget_show(button);
...
return 0;
}
为什么按下按钮输出的不是: Output: Hello World , 而是乱码,
而言《GTK+2.0 编程范例》(宋国伟) p29, 有类似的传值方式呀。 问题出在哪里?
void press(GtkWidget * widget, GdkEvent * event, gpointer data)
{
g_print("Output: %s n",(gchar *) data);
}
int main(int argc, char * argv[])
{
GtkWidget * button;
...
button = gtk_button_new_with_label("OK");
gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(press),
(gpointer) ("Hello World"));
gtk_widget_show(button);
...
return 0;
}
为什么按下按钮输出的不是: Output: Hello World , 而是乱码,
而言《GTK+2.0 编程范例》(宋国伟) p29, 有类似的传值方式呀。 问题出在哪里?
|
第一种改法是正确的,因为button的回调函数就两个参数。一个指向当前的widget,另一个是给回调函数传递的参数。