我是gtk和C gui編程的初學者,在爲我的C應用程序實現GUI時有兩個具體問題。如何從使用gtk回調調用的函數返回值?
我已經在我的代碼中調用了一個回調函數,函數應該返回一個值。如何從函數中獲取我的主值?
在使用GTK的GUI中,通過主或嵌套函數調用來實現多個函數調用的最佳方式是什麼?我應該設計並打開每個函數調用的新窗口,如果是這種情況,那麼當它的工作結束時如何關閉它,或者我有一些方法,其中我可以在一些函數調用後改變同一個窗口的內容/ O的功能。
示例代碼,其中我希望函數hello在main中通過callback調用後返回值144。
#include <gtk/gtk.h>
static gboolean delete_event(GtkWidget *widget,
GdkEvent *event,
gpointer data)
{
g_print ("delete event occurred\n");
return FALSE;
}
int hello(GtkWidget *widget, gpointer data)
{
int a=144;
return a;
}
/* Another callback */
static void destroy(GtkWidget *widget,
gpointer data)
{
gtk_main_quit();
}
int main(int argc,
char *argv[])
{
GtkWidget *window;
GtkWidget *button;
int value;
gtk_init (&argc, &argv);
/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "delete-event",
G_CALLBACK (delete_event), NULL);
g_signal_connect (window, "destroy",
G_CALLBACK (destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello World");
g_signal_connect (button, "clicked",
G_CALLBACK (hello), NULL);
// printf("value is %d",value);
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window);
gtk_main();
return 0;
}
非常感謝。 – anubhav 2011-04-12 08:26:30