DuiVision菜单类是CDuiMenu。有两种显示的位置,一种是在窗体顶部某个button点击后能够下拉一个菜单,还有一种是托盘图标的右键菜单。

窗体中的菜单定义方式是xml文件里设置某个button的action属性,以menu:开头。后面是菜单的XML文件名称或XML定义名,比如以下这样定义:

<imgbtn name="button.menu" pos="-110,0,-77,29" skin="IDB_BT_MENU" tip="菜单" action="menu:mainmenu.xml"/>

托盘菜单默认是依照resource.xml中定义的menu_tray指向的XML文件来载入菜单。

两种方式载入的菜单定义XML文件格式都是同样的,參考前面XML说明章节的演示样例。

菜单类的属性例如以下:

属性名 类型 说明
width 数字 菜单窗体宽度
item-height 数字 每一个菜单项的高度
left 数字 菜单左側图标区的宽度
sep-height 数字 菜单分隔线的高度
font 字符串 字体
fontwidth 数字 字体宽度
frame-width 数字 菜单项距离边框的宽度
top-height 数字 菜单项顶部距离边框的高度
bottom-height 数字 菜单项底部距离边框的高度
crrowhover 颜色 菜单项背景颜色(鼠标移动到菜单项时候的颜色),假设不设置则使用默认颜色
img-rowhover 图片 菜单项背景图片(鼠标移动到菜单项时候的背景图片),优先级比背景颜色高
img-popuparrow 图片 弹出菜单箭头图片

经常使用函数例如以下:

函数 是否虚函数 说明
LoadXmlFile 载入菜单XML文件
AddMenu 动态加入菜单项
AddSeparator 动态加入菜单分隔线
SetItemTitle 预设值菜单项的标题
SetItemVisible 预设值菜单项的可见性
SetItemDisable 预设值菜单项的禁用状态
SetItemCheck 预设值菜单项的检查标志
SetMenuPoint 刷新全部菜单项的位置信息
GetParentMenu 获取父菜单对象
GetHoverMenuItem 获取当前激活菜单项对象

菜单中载入的每一个菜单项的控件是CMenuItem类。控件类型名是menuitem,菜单项的属性例如以下:

属性名 类型 说明
seperator 0|1 是否分隔线
select 0|1 是否选择(假设是checkbox或radiobutton类型的菜单项,此属性必须设置为1)
check 0|1 是否处于选中状态
group 字符串 广播button所属的组名,同样组名的广播button是属于一组的。能够联动。一组中仅仅有一个会处于选中状态
value 字符串 广播button的值,一组广播button中的多个button值是不一样的。当获取这一组广播button的值时候,获取的就是选中的button的值
menu 字符串 引用其它的菜单的名字(通过资源定义能够找到的菜单的名字),设置了这个属性,则会将相应的菜单嵌入当前菜单中
image 图片 菜单项左側的小图片,假设是弹出菜单,而且没有设置菜单的img-popuparrow属性。则image属性表示菜单项右側的箭头图片
img-count 数字 设置菜单项左側图片是由几个并列的小图片组成的
taskmsg 0|1 是否通过任务方式运行菜单处理函数,假设弹出菜单的处理函数中有堵塞或等待的操作(比如打开一个对话框),则运行过程中弹出菜单可能会由于失去焦点而将自身的对象删除,这样的情况下就须要通过任务方式运行菜单处理函数,任务方式是将操作插入任务队列。由任务队列线程再去运行菜单处理函数

菜单项类的经常使用函数例如以下:

函数 是否虚函数 说明
SetCheck 设置是否选择
GetCheck 获取是否选择的状态
IsSeparator 推断是否分隔线
SetGroupName 设置广播button组的名字
GetGroupName 获取广播button组的名字
GetValue 获取广播button的值
GetGroupValue 获取广播button组的值
ResetGroupCheck 刷新父控件以下全部同一个组的RadioButton控件的状态

菜单界面示比例如以下:


DuiVision开源码下载地址(github):https://github.com/blueantst/DuiVision

蓝蚂蚁工作室主页:http://www.blueantstudio.net

DuiVision QQ群:325880743

微信公众号:blueantstudio 或搜索 蓝蚂蚁工作室

DuiVision开发教程(19)-菜单的更多相关文章

  1. DuiVision开发教程(18)-弹出窗

    DuiVision的弹出窗体类CDlgPopup,是菜单.下拉列表等控件的父类,也能够单独使用,用于创建弹出窗体.弹出窗体默认是非激活状态下自己主动关闭,比如鼠标点击到弹出窗体外面的区域,弹出窗体就会 ...

  2. DuiVision开发教程(17)-对话框

    DuiVision的对话框类是CDlgBase. 代码中假设须要创建一个对话框,一般建议使用DuiSystem类中封装的若干对话框相关的函数来操作,包括创建对话框.删除对话框.依据对话框名获取对话框指 ...

  3. DuiVision开发教程(15)-DUI文本控制基础类

    CControlBaseFont类是DuiVision支持所有基类的控件的文本属性. 此控件例如属性列表,下面: 物业名称 类型 说明 title 字符串 控件的显示标题 font 字体 控件的字体, ...

  4. Android OpenGL ES 开发教程 从入门到精通

    感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...

  5. [置顶] Kendo UI开发教程: Kendo UI 示例及总结

    前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...

  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明

    前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...

  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明

    上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作 ...

  8. 微信公众账号开发教程(四)自定义菜单(含实例源码)——转自http://www.cnblogs.com/yank/p/3418194.html

    微信公众账号开发教程(四)自定义菜单 请尊重作者版权,如需转载,请标明出处. 应大家强烈要求,将自定义菜单功能课程提前. 一.概述: 如果只有输入框,可能太简单,感觉像命令行.自定义菜单,给我们提供了 ...

  9. 《ArcGIS Engine+C#实例开发教程》第六讲 右键菜单添加与实现

    原文:<ArcGIS Engine+C#实例开发教程>第六讲 右键菜单添加与实现 摘要:在这一讲中,大家将实现TOCControl控件和主地图控件的右键菜单.在AE开发中,右键菜单有两种实 ...

随机推荐

  1. thinkphp命名空间

    thinkphp命名空间 总结 1.只对函数,类,及const定义的常量有效,对define定义的常量无效 2.如果函数不是为了使用,那有什么意义呢 3.ThinkPHP将命名空间转化为了路径,比如n ...

  2. 3.IntelliJ IDEA 使用详解

    转自:https://blog.csdn.net/wl_627292578/article/details/53796226 目录结构: InteliJ IDEA 没有工作空间的概念 project ...

  3. 点击鼠标右键弹出错误提示:CrashHandler initialization error

    电脑重装系统后,什么都没有了,重装部分必须用的软件后,不管是在桌面还是在文件夹中,当点击鼠标右键时,总是弹出错误,如下图所示: 上网找解决方法,也没有找到,但是看错误,是与SVN有关. 产生原因:To ...

  4. GoldenGate 异常处理预案

    异常处理一般步骤 如果GoldenGate复制出现异常,可以通过以下步骤尝试解决问题: 1)        通过ggsci>view report命令查找ERROR字样,确定错误原因并根据其信息 ...

  5. Unified BeginFrame scheduling for Chrome

    Unified BeginFrame scheduling for Chrome http://goo.gl/D1Qxrr Status: http://crbug.com/401331 and ht ...

  6. WLAN RTT (IEEE 802.11mc)

    WLAN RTT (IEEE 802.11mc) Android 9 中的 WLAN 往返时间 (RTT) 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 WLAN 感知对等设 ...

  7. eBay起诉指控亚马逊利用非法手段挖走其卖家

    [摘要]eBay在诉状中称,亚马逊的代表滥用eBay的内部电子邮件系统联系卖家,这违反了市场政策. 腾讯科技讯 10月18日消息,据外媒报道,拍卖网站eBay对亚马逊提起诉讼,指控这家美国零售巨头利用 ...

  8. C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件

    原文:C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件 这两天忙着把框架改为支持加载C++和Delphi的插件,来不及更新blog了.      原来的写的框架只支持c#插件,这个好做 ...

  9. CMSIS-RTOS 信号量

    信号量Semaphores 和信号类似,信号量也是一种同步多个线程的方式,简单来讲,信号量就是装有一些令牌的容器.当一个线程在执行过程中,就可能遇到一个系统调用来获取信号量令牌,如果这个信号量包含多个 ...

  10. ECNUOJ 2143 端午节快乐

    端午节快乐 Time Limit:1000MS Memory Limit:65536KBTotal Submit:1720 Accepted:868 Description  有一段有趣的传说.公元前 ...