DuiVision开发教程(19)-菜单
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)-菜单的更多相关文章
- DuiVision开发教程(18)-弹出窗
DuiVision的弹出窗体类CDlgPopup,是菜单.下拉列表等控件的父类,也能够单独使用,用于创建弹出窗体.弹出窗体默认是非激活状态下自己主动关闭,比如鼠标点击到弹出窗体外面的区域,弹出窗体就会 ...
- DuiVision开发教程(17)-对话框
DuiVision的对话框类是CDlgBase. 代码中假设须要创建一个对话框,一般建议使用DuiSystem类中封装的若干对话框相关的函数来操作,包括创建对话框.删除对话框.依据对话框名获取对话框指 ...
- DuiVision开发教程(15)-DUI文本控制基础类
CControlBaseFont类是DuiVision支持所有基类的控件的文本属性. 此控件例如属性列表,下面: 物业名称 类型 说明 title 字符串 控件的显示标题 font 字体 控件的字体, ...
- Android OpenGL ES 开发教程 从入门到精通
感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...
- [置顶] Kendo UI开发教程: Kendo UI 示例及总结
前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作 ...
- 微信公众账号开发教程(四)自定义菜单(含实例源码)——转自http://www.cnblogs.com/yank/p/3418194.html
微信公众账号开发教程(四)自定义菜单 请尊重作者版权,如需转载,请标明出处. 应大家强烈要求,将自定义菜单功能课程提前. 一.概述: 如果只有输入框,可能太简单,感觉像命令行.自定义菜单,给我们提供了 ...
- 《ArcGIS Engine+C#实例开发教程》第六讲 右键菜单添加与实现
原文:<ArcGIS Engine+C#实例开发教程>第六讲 右键菜单添加与实现 摘要:在这一讲中,大家将实现TOCControl控件和主地图控件的右键菜单.在AE开发中,右键菜单有两种实 ...
随机推荐
- sass10 demo1
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Android sdk版本以及兼容性问题
Android:minSdkVersion —— 此属性决定你的应用能兼容的最低的系统版本,一盘情况是必须设置此属性. android:targetSdkVersion —— 此属性说明你当前的应用是 ...
- [USACO09JAN] 气象测量/气象牛The Baric Bovine 解题报告(DP)
题目链接:https://www.luogu.org/problemnew/show/P2933 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N &l ...
- Ionic CLI升级到3版本后2版本工程运行出错.md
1. 问题描述: 最近将Ionic的CLI升级到了最新的版本3.2,升级后在原来Ionic2版本的CLI中创建的工程,通过ionic serve运行报错,错误类似如下: C:\Users\Admin\ ...
- javascript 优秀写法
http://www.csdn.net/article/2014-01-06/2818025-Useful-JavaScript-Tips-Best-Practices
- 解决夸dll返回dynamic无法访问
public static class DynamicFactory { //创建线程安全(对象不会再同一时刻被多个线程访问)的字典对象 private static ConcurrentDictio ...
- python note #1
To record my process of studying python and to practice my English meanwhile, I'd like to start writ ...
- WHU 1540 Fibonacci 递推
武大邀请赛的网络预选赛,就去做了个签到题,居然连这个递推都没推出来,真是惭愧. 而且好久没写矩阵乘法了,来回顾一下. 题意: 求Fibonacci数列的,前n项立方和. 思路: 可以求得一下递推公式: ...
- 【Round #36 (Div. 2 only) B】Safe Spots
[题目链接]:https://csacademy.com/contest/round-36/task/safe-spots/ [题意] 给你n个数字构成的序列; 每个位置上的数都由0和1组成; 对于每 ...
- 洛谷 P1407 工资
P1407 工资 题目描述 有一家世界级大企业,他们经过调查,发现了一个奇特的现象,竟然在自己的公司里,有超过一半的雇员,他们的工资完全相同! 公布了这项调查结果后,众多老板对于这一现象很感兴趣,他们 ...