windows mobile 中软键菜单的格式

首先用资源编辑器创建一个简单的菜单:

IDR_MENU MENU
BEGIN
    POPUP "
帮助"
    BEGIN
        MENUITEM "
关于
",                          IDM_HELP_ABOUT
    END
END

这个菜单只包括一个弹出菜单“帮助”,弹出后只有一个菜单项“关于”。

 

为了声明或者创建软键菜单有两种方法,一是在 *.rc 文件中编写 RCDATA 节:

IDR_SOFTKEYMENU RCDATA

BEGIN

0x0000, 0x0002,

0xFFFE, 0x 9C 56, 0x0004, 0x0010, 0x 9C 58, 0x0000, 0xFFFF,

0xFFFE, 0x 9C 57, 0x0004, 0x0018, 0x 9C 59, 0x0000, 0

END

 

另外就是在 *.rc2 中常见 SHMENUBAR 节:

IDR_SOFTKEYMEN SHMENUBAR DISCARDABLE
BEGIN

IDR_SOFTKEYMEN, 2,

I_IMAGENONE, IDM_OK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,

I_IMAGENONE, IDM_HELP, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_HELP, 0, 0,

END

 

这样创建的结果是在菜单栏(其实不应该叫做菜单栏)的左边是一个按钮:“确定”;右边是一个探出菜单“帮助”,就是我们手动创建的那个。

两种方法数据段看起来迥然不同,其实是一样的,首先是第一行:

0x 007C : menu ID,也就是IDR_SOFTKEYMENU;

0x0002: 按钮的个数,这里需要两个,左边是 BUTTON,右边是 MENU;

剩下的两行格式一样,只需要解释一行:

0xFFFE: ICON ID,这是I_IMAGENONE 的数值,表示只有文本,没有图标;

0x 9C 56: 这个是按钮所对应的事件,比如IDM_OK

0x0004: 菜单的属性,意思是TBSTATE_ENABLED,这个按钮可用;

0x0010: 菜单的风格,意思是TBSTYLE_AUTOSIZE | TBSTYLE_BUTTON,自动调整大小,
而且是一个按钮;如果是TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE,就是一
个菜单了;

0x 9C 58: 字符串的ID,比如IDS_OK,按钮中显示什么字符串;

0x0000: 如果当前按钮对应一个弹出菜单,这是子菜单的索引;

0xFFFF: 这个按钮所对应的菜单在菜单资源中的坐标(based 0)0xFFFF NOMENU。在第二
行里面是0,表示我们需要菜单定义里下标为 0 的菜单,就是“帮助”。如果有需要,
当然可以用其他的下标。

 

关于菜单的动态创建和修改,下面的链接绝对值得一看:

http://blogs.msdn.com/johnkenn/archive/2005/08/22/454858.aspx

 

声明一个两个按钮的菜单:

IDR_BUTTON_BUTTON SHMENUBAR DISCARDABLE
BEGIN
    0, 2,
    I_IMAGENONE, IDM_OK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,    
    I_IMAGENONE, IDM_OK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,
END

声明一个左边是按钮,右边是空白的菜单:
IDR_BUTTON_NONE SHMENUBAR DISCARDABLE
BEGIN
    0, 1,
    I_IMAGENONE, IDM_OK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,
END

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值