나는 gtk 및 C GUI 프로그래밍의 초보자이며 C 응용 프로그램 용 GUI를 구현할 때 두 가지 구체적인 질문이 있습니다.gtk 콜백을 사용하여 호출 된 함수에서 값을 반환하는 방법은 무엇입니까?
코드에서 콜백을 통해 함수를 호출했으며이 함수는 값을 반환합니다. 함수에서 내 메인의 값을 얻는 방법?
GTK를 사용하는 GUI에서 기본 또는 중첩 함수 호출에서 많은 함수 호출을 구현하는 가장 좋은 방법은 무엇입니까? 해야합니까 디자인 및 각 함수 호출시 새 창을 열어야합니다 그리고 그 경우 경우 어떻게 그 작업을 끝낼 때 또는 일부 방법은 내가 함수 호출에 걸쳐 같은 창에서 내용을 변경할 수 있습니다/O 기능에 의해.
샘플 코드 여기서 hello 함수는 main에서 콜백 호출 후 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