文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>GUI开发-用GTK创建菜单的快捷方法

GUI开发-用GTK创建菜单的快捷方法

时间:2006-03-08  来源:luojiafeng1984

    前几天在网上搜索用GTK+创建单选菜单项和复选菜单项的简单程序,始终没有找到,翻GTK+参考手册,关于单选菜单项和复选菜单项的还是无文档构件,根据参考手册,做了一个简单的例子,希望对GTK进行GUI开发的初学者有所帮助!   #include <gtk/gtk.h> /********************************************* 下面的数组里面的每一行代表一个菜单项,这个数组是创建菜单项的关键。 比如说{"/_File", NULL, NULL, 0, "<Branch>"}代表文件主菜单项,其中第一个参数“/_File”代表菜单项的名称,第二个参数是快捷键,这里定义为NULL,第三个参数是菜单激活时的回调函数,第四个参数是传递给回调函数的参数,默认为0,第五个参数是菜单的类型,若第五个参数为"<Branch>",表明该菜单项还有下一级菜单,如果第五个参数为"<CheckItem>",表明该菜单项是复选菜单项,如果第五个参数是"<RadioItem>",表明该菜单项是单选菜单项。  *********************************************/ static GtkItemFactoryEntry menu_items[] = {     {"/_File", NULL, NULL, 0, "<Branch>"},     {"/File/_New", "<Control>N", NULL, 0, NULL},     {"/_Edit", NULL, NULL, 0, "<Branch>"},     {"/Edit/_Cut", "<Control>X", NULL, 0, NULL} };   /********************************************* 下面的函数是创建菜单栏,第一个参数是菜单栏所在的窗口,第二个参数是菜单栏指针,大家都知道,要通过函数改变变量的值,必须把那个变量的地址传过来,(指针和变量的区别大家都应该知道吧)而下面要改变的就是一个指针,所以第二个参数定义为指向指针的指针。这个函数被调用后,第二个参数所指向的就是创建好的菜单栏。 **********************************************/   static void get_main_menu (GtkWidget *window, GtkWidget **menubar) {     GtkItemFactory *item_factory;     GtkAccelGroup *accel_group;     /* 菜单项的数量 */     gint n = sizeof(menu_items) / sizeof(menu_items[0]);       /* 创建快捷键组 */     accel_group = gtk_accel_group_new();       item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", accel_group);    /* 创建菜单项,利用了前面定义的菜单项数组作为参数*/     gtk_item_factory_create_items(item_factory, n, menu_items, NULL);        if (menubar)  /* 如果不是空指针 */         *menubar = gtk_item_factory_get_widget(item_factory, "<main>"); }   int main(int argc, char* argv[]) {     GtkWidget *window;     GtkWidget *vbox;     GtkWidget *menubar;         gtk_init(&argc, &argv);     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);     vbox = gtk_vbox_new(FALSE, 0);     gtk_container_add(GTK_CONTAINER(window), vbox);       get_main_menu(window, &menubar);     gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);     gtk_widget_show_all(window);     gtk_main();     return FALSE; }     编写Makefile如下: CC = gcc all: [TAB键] $(CC) -o menu menu.c `pkg-config --cflags --libs gtk+-2.0`   ____________________________________________________  
相关阅读 更多 +
排行榜 更多 +
试着飞手游下载

试着飞手游下载

休闲益智 下载
血染小镇(功能菜单)中文版下载

血染小镇(功能菜单)中文版下载

飞行射击 下载
泰坦之旅高爆版下载

泰坦之旅高爆版下载

角色扮演 下载