标签:dui menu
针对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的使用:
效果图:
标签:dui menu
原文地址:http://blog.csdn.net/cair2/article/details/45912709