我有一个程序,当调用gtk_box_pack_start()打包菜单栏时,它神秘地崩溃了。我在这里http://zetcode.com/gui/gtk2/menusandtoolbars/遵循了一个教程。
Github:https://github.com/Taisho/c-gstreamer-audio-player
文件:client / client.c
这里只有相关代码:
void init_menus(vbox) {
GtkWidget *daemon_menu = gtk_menu_new (); /* Don't need to show menus */
GtkWidget *connect_item = gtk_menu_item_new_with_label ("Connect");
GtkWidget *preferences_item = gtk_menu_item_new_with_label ("Preferences");
gtk_menu_append (GTK_MENU (daemon_menu), connect_item);
gtk_menu_append (GTK_MENU (daemon_menu), preferences_item);
gtk_widget_show (connect_item);
gtk_widget_show (preferences_item);
GtkWidget *menu_bar = gtk_menu_bar_new ();
gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE,FALSE,0); //<-- segmentation fault here
gtk_widget_show (menu_bar);
GtkWidget *file_item = gtk_menu_item_new_with_label ("File");
gtk_widget_show (file_item);
}
正在通过常规vbox从main()中调用init_menus()
int main (int argc, char **argv) {
...
gtk_init(&argc, &argv);
...
vbox = gtk_vbox_new (FALSE, 0);
...
init_menus(vbox);
}