Duilib 弹出菜单

源码下载地址:https://share.weiyun.com/5TSf5mJ

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

Duilib 弹出菜单_第1张图片

从上可以看出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的格式:

Duilib 弹出菜单_第2张图片

 

Menu的使用:

Duilib 弹出菜单_第3张图片

 

效果图:

 

你可能感兴趣的:(Duilib)