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 或搜索 蓝蚂蚁工作室
转载于:https://www.cnblogs.com/gccbuaa/p/7026365.html
DuiVision开发教程(19)-菜单相关推荐
- DuiVision开发教程(2)-如何写一个简单的界面程序
基于DuiVision界面库开发的界面程序主要包括如下几部分内容: 1.资源定义,包括图片资源.各个窗口界面的xml定义文件 2.事件处理类代码,用于处理界面响应消息 3.其他业务逻辑代码 下面举例说 ...
- 微信公众平台开发教程--自定义菜单
微信公众平台开发教程(五)自定义菜单 请尊重作者版权,如需转载,请标明出处. 应大家强烈要求,将自定义菜单功能课程提前. 一.概述: 如果只有输入框,可能太简单,感觉像命令行.自定义菜单,给我们提供了 ...
- DuiVision开发教程(12)-任务类和任务队列
基于MFC的界面程序中,如果存在多线程,一般情况下只有主线程(界面线程)可以调用Windows窗口相关的函数,否则如果在其他线程中调用了界面函数,很可能会造成异常.为此DuiVision界面库提供了一 ...
- DuiVision开发教程(3)-XML资源文件定义介绍
全局资源定义-resource.xml 基于DuiVision界面库的程序,需要有一个默认的资源定义XML文件,此文件默认的位置是exe文件所在路径下的xml\resource.xml文件,如果使用了 ...
- DuiVision开发教程(14)-DUI控件基础类
DuiVision所有控件的基类是CControlBase类. CControlBase的属性如下表: 属性名 类型 说明 show 1|0 控件是否可见 disable 1|0 控件是否被禁用 po ...
- DuiVision开发教程(7)-系统预定义控件、动作和事件
DuiVision库中预定义了一些控件名.动作和事件,这些定义可以参考duiid.h. 对于预定义的控件名,只要某个控件定义的名字是这个名字,就会被看做为特定的控件,系统会对其事件作出响应,预定义控件 ...
- DuiVision开发教程(16)-区域控件
DuiVision的area控件(类名是CArea)可以设置区域的渐变透明度,不能响应鼠标事件,此控件的原理是画一个填充的透明度渐变矩形区域,透明度从矩形区域顶部究竟部均匀渐变. 控件的属性包含: 属 ...
- DuiVision开发教程(17)-对话框
DuiVision的对话框类是CDlgBase. 代码中假设须要创建一个对话框,一般建议使用DuiSystem类中封装的若干对话框相关的函数来操作,包括创建对话框.删除对话框.依据对话框名获取对话框指 ...
- DuiVision开发教程(15)-DUI文本控制基础类
CControlBaseFont类是DuiVision支持所有基类的控件的文本属性. 此控件例如属性列表,下面: 物业名称 类型 说明 title 字符串 控件的显示标题 font 字体 控件的字体, ...
最新文章
- 好多Javascript日期选择器呀-7
- linux VM映像chroot注入修改root密码
- 计算机网络第二章-物理层
- 3分钟了解dubbo服务调试管理实用命令
- leetcode307. Range Sum Query - Mutable
- win8下面卸载MYSQL数据库
- java locale.us_JAVA实现国际化
- 饿了么4年+阿里2年:研发路上的一些总结与思考
- python解压打开文件过多_在python中使用zipfile压缩文件时层级很多,有很多层目录...
- AI 人才遭疯抢,Google 为 22 岁印度毕业生开出 1000w+ 年薪
- android:gravity与android:layout_gravity的区别,以及代码设置对应属性
- 文件操作:fseek函数和ftell函数
- nbu备份本机oracle,nbu 7.1 备份恢复ORACLE实践手册
- java供应链项目详解_基于jsp的企业供应链管理系统-JavaEE实现企业供应链管理系统 - java项目源码...
- Qt 解决窗口在多个显示器上显示位置设置问题
- 章文嵩博士和他背后的负载均衡(LOAD BANLANCER)帝国
- 【部分翻译】NSBezierPath的基础知识
- 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册
- 修改本地数据库密码(修改成你需要的密码)
- java中expectations_JMockit 之 Expectations
热门文章
- 如何解决文件不存在_传奇微端配置Pak密码文件不存在怎么解决?传奇分享汇
- SCI论文写作训练营笔记汇总01_概述+文献检索与管理
- python网络爬虫系列(四)——requests模块
- LeetCode 1806. 还原排列的最少操作步数(模拟)
- LeetCode 444. 序列重建(拓扑排序)
- java a 2_Java A* 算法(2)
- java的foeachr循环_for循环和Dowhile循环的应用
- ppt生成器_小米发布会ppt词云怎么做的
- Python中查找包含它的列表元素的索引,index报错!!!
- python面试总结(三)拷贝与通信