Я новичок в программировании на gtk и C и у меня есть два конкретных вопроса, пока я работаю над графическим интерфейсом для моего C-приложения.
Я вызвал функцию с помощью обратного вызова в моем коде, и функция должна возвращать значение. Как получить значение в моем main из функции?
Каков наилучший способ реализовать множество вызовов функций из вызовов основной или вложенной функции в графическом интерфейсе с использованием GTK. Если я спроектирую и открою новое окно при каждом вызове функции, и если это так, то как мне закрыть его, когда его работа закончена, или у меня есть какой-то способ, которым я могу изменить содержимое того же окна через вызовы функций после некоторого / O по функциям.
Пример кода, в котором я хочу, чтобы функция hello возвращала значение 144 после вызова обратным вызовом в main.
#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;
}