您的位置:首页 > 产品设计 > UI/UE

DuiVision开发教程(19)-菜单

2015-06-12 23:42 155 查看
DuiVision菜单类是CDuiMenu,有两种显示的位置,一种是在窗口顶部某个按钮点击后可以下拉一个菜单,另一种是托盘图标的右键菜单。

窗口中的菜单定义方式是xml文件中设置某个按钮的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,菜单项的属性如下:

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

函数是否虚函数说明
SetCheck设置是否选择
GetCheck获取是否选择的状态
IsSeparator判断是否分隔线
SetGroupName设置广播按钮组的名字
GetGroupName获取广播按钮组的名字
GetValue获取广播按钮的值
GetGroupValue获取广播按钮组的值
ResetGroupCheck刷新父控件下面所有同一个组的RadioButton控件的状态
菜单界面示例如下:







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

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

DuiVision QQ群:325880743

微信公众号:blueantstudio 或搜索 蓝蚂蚁工作室
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: