LinuxSir.cn,穿越时空的Linuxsir!

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

大家帮我看看这个gtk的小程序

[复制链接]
发表于 2003-4-29 16:33:34 | 显示全部楼层 |阅读模式
用gtk编译的时候,总是说,g_signal_connect 没有定义,而且出错提示的行是168,但是我的程序总共才100多行阿??我的gtk安装是成功的,其它的程序可以编译通过

#include<gtk/gtk.h>
void on_menu_activate(GtkMenuItem* item,gpointer data)
{
g_print("菜单项%s被激活\n",(gchar*)data);
}
int main(int argc,char *argv[])
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *menubar;
GtkWidget *menu;
GtkWidget *editmenu;
GtkWidget *helpmenu;
GtkWidget *rootmenu;
GtkWidget *menuitem;
GtkAccelGroup *accel_group;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"菜单测试程序");
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
accel_group=gtk_accel_group_new();

gtk_window_add_accel_group(GTK_WINDOW(window),accel_group);
box=gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),box);

menu=gtk_menu_new();
menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW,   
accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("新建"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("打开"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_SAVE,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("保存"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_SAVE_AS,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("另存));

menuitem=gtk_separator_menu_item_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("退出));

rootmenu=gtk_menu_item_new_with_label("文件");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),menu);
menubar=gtk_menu_bar_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menubar),rootmenu);
rootmenu=gtk_menu_item_new_with_label("编辑");
editmenu=gtk_menu_new();

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_CUT,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("编辑");

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("复制"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("粘贴"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_FIND,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("查找"));

gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),editmenu);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar),rootmenu);

rootmenu=gtk_menu_item_new_with_label("帮助");
helpmenu=gtk_menu_new();

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("帮助"));

menuitem=gtk_menu_item_new_with_label("关于...");
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("关于"));

gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),helpmenu);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar),rootmenu);

gtk_box_pack_start(GTK_BOX(box),menubar,FALSE,FALSE,0);
gtk_widget_show_all(window);
gtk_main();
return FALSE;
}
发表于 2007-5-9 17:36:20 | 显示全部楼层

下面ok

#include<gtk/gtk.h>
void on_menu_activate(GtkMenuItem* item,gpointer data)
{
g_print("菜单项%s被激活\n",(gchar*)data);
}
int main(int argc,char *argv[])
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *menubar;
GtkWidget *menu;
GtkWidget *editmenu;
GtkWidget *helpmenu;
GtkWidget *rootmenu;
GtkWidget *menuitem;
GtkAccelGroup *accel_group;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"菜单测试程序");
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
accel_group=gtk_accel_group_new();

gtk_window_add_accel_group(GTK_WINDOW(window),accel_group);
box=gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),box);

menu=gtk_menu_new();
menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW,
accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("新建"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("打开"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_SAVE,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("保存"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_SAVE_AS,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("另存"));

menuitem=gtk_separator_menu_item_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("退出"));

rootmenu=gtk_menu_item_new_with_label("文件");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),menu);
menubar=gtk_menu_bar_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menubar),rootmenu);
rootmenu=gtk_menu_item_new_with_label("编辑");
editmenu=gtk_menu_new();

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_CUT,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("编辑"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("复制"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("粘贴"));

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_FIND,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("查找"));

gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),editmenu);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar),rootmenu);

rootmenu=gtk_menu_item_new_with_label("帮助");
helpmenu=gtk_menu_new();

menuitem=gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP,accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("帮助"));

menuitem=gtk_menu_item_new_with_label("关于...");
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu),menuitem);
g_signal_connect(G_OBJECT(menuitem),"activate",G_CALLBACK(on_menu_activate),(gpointer)("关于"));

gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),helpmenu);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar),rootmenu);

gtk_box_pack_start(GTK_BOX(box),menubar,FALSE,FALSE,0);
gtk_widget_show_all(window);
gtk_main();
return FALSE;
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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