Windows Mobile的MenuBar

本文探讨了如何从空MenuBar开始动态创建MenuBar,并解决了仅包含左右软键的MenuBar无法直接获取到HMENU的问题。文中还介绍了如何手动创建PopMenu并通过TrackPopupMenuEx将其放置于指定位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 先前都是用SHCreateMenuBar来进行MenuBar的创建的,由于CASE需求,现需要改成动态创建MenuBar。使用SHCreateMenuBar创建一个SHCMBF_EMPTYBAR这样的MENUBAR,而后用TB_SETBUTTONINFO来修改它的左右软键是不行的,因为TB_SETBUTTONINFO是对于已经创建了的左右软键来修改他的属性的,应该是用TB_INSERTBUTTON来进行插入,不过我偷了一个懒,在RC中创建了一个左右软键都为空格的资源,然后通过SHCreateMenuBar来进行创建,此时便可以用TB_SETBUTTONINFO来进行修改了。

  接下来的问题是如何创建POPMENU,看了MSDN,通过TB_GETBUTTONINFO来得到TBBUTTONINFO的lparam,变是左软键或右软键的HMENU了,但是发现得到的lparam一直为0,后来在RC中建立了一个有菜单的MENUBAR,发现可以得到lparam了。于是乎我采取很多其他方法,GETMENU,GETSUBMENU等等等都无法得到这个HMENU,所以得出结论,lparam是针对有菜单的MENUBAR的,而仅有左右软键的MENUBAR只是两个BUTTON而已。而后找到一篇文章,它提到使用POPMENU解决这个问题,经过实验,发现是可以实现的。(但是有一点奇怪,我既然是可以用TB_SETBUTTONINFO去设置,但是却无法用TB_GETBUTTON等方法去得到我已经SET进去的TEXT等一些信息,后续要再研究一下)(猜想另一种方法,在RC中建立一个有二级菜单的MENU,在创建时,把这个MENU的一项删除掉,仅仅猜想,后续试验。)反正是自己建立的POPMENU,想怎么创建都可以,最后通过TrackPopupMenuEx放在左右软键的为止就OK了。

参考地址:http://www.m8cool.com/article/view-101-12666.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值