Windows Mobile的MenuBar

来源:互联网 发布:c3程序员论坛 编辑:程序博客网 时间:2024/05/17 01:30

 先前都是用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

原创粉丝点击