GTK中的启动画面

我是GTK的新手,我正在使用它在C中创建UI。我创建了一个启动画面,我可以在指定的秒后使用函数g_timeout_add(100, function_to_call, NULL);关闭它g_timeout_add(100, function_to_call, NULL); 。 Splash屏幕效果很好。 但问题是当我进一步扩展我的程序时(即)关闭启动画面后我想要另一个窗口自动显示,它不会发生。 两个窗户一起打开。 这是我的计划。

 gboolean function_to_call(gpointer data){ gtk_quit_main(); return(FALSE); } int main (int argc, char *argv[]){ GtkWidget *window, *image, *another_window; gtk_init(&argc, &argv); . . . . . . . g_timeout_add (100, function_to_call, NULL); gtk_main (); /*if my program is till this, splash screen closes after 1 sec . But when i try *to define another window from here onwards and call gtk_widget_show() and gtk_main() *again for another_ window, window and another_window both open together and window *doesn't close after 1 sec. */ } 

任何forms的帮助都是值得赞赏的。
谢谢。

你的function_to_call没有关闭你的启动窗口,它结束了gtk_main事件循环。 您不需要结束事件循环。

function_to_call ,你要做的是隐藏(或破坏)你的启动窗口并显示你的下一个窗口( gtk_widget_hide()gtk_widget_show() )。

我创建了一个splashscreen头文件,如下所示..

 #include  /* Close the splash screen */ gboolean close_screen(gpointer data) { gtk_widget_destroy((GtkWidget*)data); gtk_main_quit (); return(FALSE); } int Show_Splash_Screen(char* image_name,int time,int width,int height) { GtkWidget *image, *window; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (window, width, height); gtk_window_set_decorated(GTK_WINDOW (window), FALSE); gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS); gtk_window_set_resizable(GTK_WINDOW(window), FALSE); image=gtk_image_new_from_file(image_name); gtk_container_add(GTK_CONTAINER(window), image); gtk_widget_show_all (window); g_timeout_add (time, close_screen, window); gtk_main (); return 0; } 

只需包含此文件并显示启动画面调用函数Show_Splash_Screen(“image_path”,time_in_seconds,width_of_image_in_pixels,height_of_image_in_pixels);