LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 923|回复: 2

用GTK2.0编写创建菜单程序出错

[复制链接]
发表于 2006-3-30 23:52:07 | 显示全部楼层 |阅读模式
我在编写创建菜单的程序时出现下面的运行错误

Gtk-CRITICAL **: gtk_item_factory_create_item: assertion `entry->path != NULL' failed
段错误

我查了一下程序好像是gtk_item_factory_create_items(item_factory,n,menu_items,NULL);
这段代码的问题,到底错在哪?
发表于 2006-3-31 00:20:48 | 显示全部楼层
Post by linus
Gtk-CRITICAL **: gtk_item_factory_create_item: assertion `entry->path != NULL' failed
段错误

entry 是野指针?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 13:46:42 | 显示全部楼层
我没有用entry这个指针呀

  1. #include<gtk/gtk.h>
  2.       2 void on_menu_activate (GtkMenuItem* item,gpointer data);
  3.       3
  4.       4 static GtkItemFactoryEntry menu_items[6] = {
  5.       5     {"/File (_F)",NULL,NULL,0,"<Branch>"}
  6.       6 /*  {"/File (_F)/NEW",NULL,on_menu_activate,"NEW",
  7.       7     "<StockItem>",GTK_STOCK_NEW},
  8.       8     {"/File (_F)/OPEN",NULL,on_menu_activate,"OPEN",
  9.       9     "<StockItem>",GTK_STOCK_OPEN},
  10.      10     {"/File (_F)/SAVE",NULL,on_menu_activate,"SAVE",
  11.      11     "<StockItem>",GTK_STOCK_SAVE},
  12.      12     {"/File (_F)/SAVE as",NULL,on_menu_activate,"SAVEas",
  13.      13     "<StockItem>",GTK_STOCK_SAVE_AS},
  14.      14     {"/File (_F)/EXIT",NULL,on_menu_activate,"QUIT",
  15.      15     "<StockItem>",GTK_STOCK_QUIT}*/
  16.      16
  17.      17 };
  18.      18
  19.      19 void on_menu_activate(GtkMenuItem* item,gpointer data)
  20.      20 {
  21.      21     g_print("Menu item %s is pressed.\n",(gchar*)data);
  22.      22
  23.      23 }
  24.      24
  25.      25 int main(int argc,char *argv[])
  26.      26 {
  27.      27     GtkWidget* window;
  28.      28     GtkWidget* box;
  29.      29     GtkWidget* menubar;
  30.      30     GtkAccelGroup* accel_group;
  31.      31     GtkItemFactory* item_factory;
  32.      32     gint n = 15;
  33.      33     gtk_init(&argc,&argv);
  34.      34     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  35.      35     gtk_window_set_title(GTK_WINDOW(window),g_locale_to_utf8("添加菜单的
  36. 快捷方式",4,NULL,NULL,NULL));
  37.      36     g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK
  38. (gtk_main_quit ),NULL);
  39.      37     accel_group = gtk_accel_group_new();
  40.      38     box = gtk_vbox_new(FALSE,0);
  41.      39     gtk_container_add(GTK_CONTAINER(window),box);
  42.      40     gtk_widget_show(box);
  43.      41     item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR,"<main>",
  44. accel_group);
  45.      42     gtk_item_factory_create_items(item_factory,n,menu_items,NULL);
  46.      43     gtk_window_add_accel_group(GTK_WINDOW(window),accel_group);
  47.      44     menubar = gtk_item_factory_get_widget(item_factory,"<main>");
  48.      45     gtk_box_pack_start(GTK_BOX(box),menubar,FALSE,FALSE,0);
  49.      46     gtk_widget_show(menubar);
  50.      47     gtk_widget_show(window);
  51.      48     gtk_main();
  52.      49     return FALSE;
  53.      50
  54.      51
  55.      52
  56.      53 }


复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表