Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> Sub Menus

上一节我们介绍了如何创建普通菜单和如果绑定用户选定的菜单到处理事件.下面来介绍分层子菜单.

子菜单的创建和菜单用的是同一个函数.创建后插入到菜单的函数glutAddSubMenu原型如下:

void glutAddSubMenu(char *entryName, int menuIndex);

entryName - 子菜单名

menuIndex - 子菜单的索引值,该参数的值是从调用glutCreateMenu函数创建子菜单时得到.

该函数会添加一个项到菜单的尾部.当鼠标移到该菜单项时会自动弹出子菜单.

下面代码段演示了上述函数的用法:

void createPopupMenus() {

    shrinkMenu = glutCreateMenu(processShrinkMenu);
glutAddMenuEntry("Shrink",SHRINK);
glutAddMenuEntry("NORMAL",NORMAL); fillMenu = glutCreateMenu(processFillMenu);
glutAddMenuEntry("Fill",FILL);
glutAddMenuEntry("Line",LINE); colorMenu = glutCreateMenu(processColorMenu);
glutAddMenuEntry("Red",RED);
glutAddMenuEntry("Blue",BLUE);
glutAddMenuEntry("Green",GREEN);
glutAddMenuEntry("Orange",ORANGE); mainMenu = glutCreateMenu(processMainMenu);
glutAddSubMenu("Polygon Mode", fillMenu);
glutAddSubMenu("Color", colorMenu); // attach the menu to the right button
glutAttachMenu(GLUT_RIGHT_BUTTON);
}

运行上面代码,当用户按鼠标右键时会弹出两个选项: "多维模式"和"颜色". 点击"颜色"按钮时会弹出子菜单: "红","蓝","绿"和"橙".

最新文章

  1. POJ2794 Double Patience[离散概率 状压DP]
  2. SDWebImage清除图片缓存
  3. VMware Fusion 中如何复制centos/linux虚拟机
  4. [转]Handler MessageQueue Looper消息循环原理分析
  5. hibernate下载包中配置文件路径
  6. Android 中调试手段 打印函数调用栈信息
  7. PhpStorm Git 配置
  8. iOS - Swift NSUserDefaults 数据存储
  9. [原创]PostgreSQL Plus Advanced Server监控工具PEM(三)
  10. 有关linux下redis overcommit_memory的问题(转)
  11. 【转】使用 NuGet 管理项目库-Phil Haack
  12. Java 中字两个字符串判断是否相等(转载)
  13. 调皮的QQ音乐API:修复无法获取歌单
  14. css基础语法一(选择器与css导入方式)
  15. this的取值
  16. [UOJ UNR#2 黎明前的巧克力]
  17. 探索ASP.NET Core中的IStartupFilter
  18. 文本分类实战(五)—— Bi-LSTM + Attention模型
  19. 【重磅】FineUIPro基础版免费,是时候和ExtJS说再见了!
  20. WebSocket推送

热门文章

  1. 以最简单的方式了解--Github
  2. 洛谷——P2026 求一次函数解析式
  3. 洛谷——2871[USACO07DEC]手链Charm Bracelet——01背包
  4. 设计模式之不变模式(Immutable Pattern)分析
  5. luogu P1284 三角形牧场
  6. iOS Undefined symbols for architecture arm64解决办法
  7. DotnetBrowser高级教程-(5)使用内置的MVC UI框架-EasyMvc
  8. LNMP第一部分环境搭建
  9. ES6里的修饰器Decorator
  10. ES6里关于数字的拓展