标题: 各位大哥,这是小弟写的关于gtk菜单的一个程序,帮我看看把,谢谢
lliang1982
新生入学
Rank: 1
注册用户



UID 95273
精华 0
积分 0(积分有什么用?)
帖子 3
阅读权限 10
注册 2004-9-17
状态 离线
发表于 2007-12-12 07:23  资料  个人空间  短消息  加为好友 
各位大哥,这是小弟写的关于gtk菜单的一个程序,帮我看看把,谢谢

今天看了gtk菜单的文章 写了个程序 是最上头一个菜单 叫root_menu 下面是一个frame 点击是弹出菜单
编译没问题 但是连结的时候报错(段错误 core dumped)各位大哥 帮我看看阿 谢谢了 还有我把几个每个程序都需要的代码写成了函数 也希望各位给看看 刚开始学 还是菜鸟 望赐教 谢谢

顶部
不容错过的IBM 集群技术资源汇总
lliang1982
新生入学
Rank: 1
注册用户



UID 95273
精华 0
积分 0(积分有什么用?)
帖子 3
阅读权限 10
注册 2004-9-17
状态 离线
发表于 2007-12-12 07:25  资料  个人空间  短消息  加为好友 
#include<gtk/gtk.h>

void cb_menu(char *s)
{
        g_print("%s\n",s);
}

gint cb_popmenu(GtkWidget *widget,GdkEvent *event)
{
        if(event->type==GDK_BUTTON_PRESS)
        {
                GdkEventButton *bevent=(GdkEventButton *)event;
                gtk_menu_popup(GTK_MENU(widget),NULL,NULL,NULL,NULL,bevent->button,bevent->time);
                return TRUE;
        }
        return FALSE;
}

GtkWidget *CreateWindow(char *title,int x,int y,char *event)
{
        GtkWidget *window;
        window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(window),title);
        gtk_widget_set_size_request(GTK_WIDGET(window),x,y);
        g_signal_connect(G_OBJECT(window),event,G_CALLBACK(gtk_main_quit),window);
        return window;
}

GtkWidget *CreateMenu(GtkWidget *menu,int n,char *name[],char *func)
{
        GtkWidget *menu_items;
        int i;
        for(i=0;i<n;i++)
        {
                gtk_menu_item_new_with_label(name);
                g_signal_connect(G_OBJECT(menu_items),"activate",G_CALLBACK(func),name);
                gtk_menu_shell_append(GTK_MENU_SHELL(menu),menu_items);
                gtk_widget_show(menu_items);
        }
        return menu;
}

int main(int argc,char *argv[])
{
        GtkWidget *window;
        GtkWidget *menu;
        GtkWidget *menu_items;
        GtkWidget *root_menu;
        GtkWidget *menu_bar;
        GtkWidget *vbox;
        GtkWidget *frame;
        char buf[128];
        int i;
        char *name[3]={"open","save","quit"};
       
        gtk_init(&argc,&argv);
       
        window=CreateWindow("menu",400,200,"delete_event");
       
        menu=CreateMenu(menu,3,name,"cb_menu");
       
        root_menu=gtk_menu_item_new_with_label("Root_Menu");
        gtk_widget_show(root_menu);
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(root_menu),menu);
       
        vbox=gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(window),vbox);
        gtk_widget_show(vbox);
       
        menu_bar=gtk_menu_bar_new();
        gtk_box_pack_start(GTK_BOX(vbox),menu_bar,FALSE,FALSE,2);
        gtk_widget_show(menu_bar);
       
        frame=gtk_frame_new(NULL);
        gtk_box_pack_start(GTK_BOX(vbox),frame,TRUE,TRUE,2);
        g_signal_connect(G_OBJECT(frame),"event",G_CALLBACK(cb_popmenu),menu);
        gtk_widget_show(frame);
       
        gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar),menu);
       
        gtk_widget_show(window);
       
        gtk_main();
       
        return 0;
}

顶部
依然烂然
超级版主
Rank: 8Rank: 8
网络助理工程师


UID 212251
精华 1
积分 36(积分有什么用?)
帖子 314
阅读权限 150
注册 2007-9-28
状态 离线
发表于 2007-12-12 09:28  资料  个人空间  主页 短消息  加为好友  QQ
菜单这功能我用Java实现过。

你的编译环境是??





天青色等烟雨 而我在等你
炊烟袅袅升起 隔江千万里
顶部
不容错过的IBM 集群技术资源汇总
lliang1982
新生入学
Rank: 1
注册用户



UID 95273
精华 0
积分 0(积分有什么用?)
帖子 3
阅读权限 10
注册 2004-9-17
状态 离线
发表于 2007-12-12 19:31  资料  个人空间  短消息  加为好友 
ubuntu 7.10 gedit gcc  gtk+-2.0

顶部
 



当前时区 GMT+8, 现在时间是 2008-5-18 11:23

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.071113 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP