¸÷λ´ó¸ç,ÕâÊÇСµÜдµÄ¹ØÓÚgtk²Ëµ¥µÄÒ»¸ö³ÌÐò,°ïÎÒ¿´¿´°Ñ,лл
½ñÌì¿´ÁËgtk²Ëµ¥µÄÎÄÕ дÁ˸ö³ÌÐò ÊÇ×îÉÏÍ·Ò»¸ö²Ëµ¥ ½Ðroot_menu ÏÂÃæÊÇÒ»¸öframe µã»÷Êǵ¯³ö²Ëµ¥±àÒëûÎÊÌâ µ«ÊÇÁ¬½áµÄʱºò±¨´í(¶Î´íÎó core dumped)¸÷λ´ó¸ç °ïÎÒ¿´¿´°¢ ллÁË »¹ÓÐÎҰѼ¸¸öÿ¸ö³ÌÐò¶¼ÐèÒªµÄ´úÂëд³ÉÁ˺¯Êý ҲϣÍû¸÷λ¸ø¿´¿´ ¸Õ¿ªÊ¼Ñ§ »¹ÊDzËÄñ Íû´Í½Ì лл #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[i]);
g_signal_connect(G_OBJECT(menu_items),"activate",G_CALLBACK(func),name[i]);
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;
} ²Ëµ¥Õ⹦ÄÜÎÒÓÃJavaʵÏÖ¹ý¡£
ÄãµÄ±àÒë»·¾³ÊÇ£¿£¿ ubuntu 7.10 gedit gcc gtk+-2.0
Ò³:
[1]