首页 > 其他 > 详细

Duilib 弹出菜单

时间:2015-05-22 11:42:39      阅读:1890      评论:0      收藏:0      [点我收藏+]

针对Duilib中的菜单,首先我们需要明白为什么不能(不是一定不能,为了方便)按照Duilib的设计初衷,在创建菜单的时候应该使用CMenuUI而是使用CMenuWnd,类似于CComboUI,在使用CComboUI的时候我们只需要创建CComboUI 设置属性即可。通过如下代码:

技术分享

从上可以看出ComboUI需要一个m_pOwner->GetManager(),来设置对象,对于ComboUI来说,他已经存在于某个布局中,所以这是没有问题的。但是菜单是弹出式的,不属于任何布局。所以对于Menu实现方式有两种:

方式一:弹出一个窗口,然后在窗口里面来加载MenuUIXml(我的方式),即:CMenuWnd方式

方式二:初始化一个CMenuUI,然后把CMenuUI加入到某个布局中,然后内部初始化MenuWnd。和ComboUI实现方式一样。即:CMenuUI


方式一:

优点:使用方便,可以直接New就行了,和当所属前窗口布局没有关系。

缺点:总是需要一个xml作为 菜单的模板。


方式二:

优点:不必须需要xml模板,可以动态增加菜单,对于Menu的动态修改方便

缺点:每次必须寻找一个布局,把MenuUI加入布局,使用起来有点麻烦。


方式一的实现: 源码下载:http://download.csdn.net/detail/cair2/8726659

下载源文件后:把UIMenu.h,UIMenu.cpp 放在Duilib的Control下面 ,observer_impl_base.hpp放在Utils下面


MenuXml的格式:

技术分享


Menu的使用:

技术分享


效果图:

技术分享


Duilib 弹出菜单

原文:http://blog.csdn.net/cair2/article/details/45912709

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!