动态菜单

既然是动态菜单,就需要在一个消息响应中创建菜单,例如,WM_CHAR消息。

菜单资源是和对象联系的,所以要有一个CMenu对象。

AppendMenu函数为调用这个函数的对象的菜单添加一个后置的菜单或菜单项。有三个参数,第一个参数如果是MF_POPUP说明是弹出菜单,这时候第二个参数应该指定一个菜单句柄,菜单句柄从哪来呢?刚才的CMenu对象有一个方法是专门为自己分配一个句柄的createmenu()。第一个参数如果是MF_STRING说明我们想附加一个菜单项,这时候第二个参数应该是一个ID号(这个ID号是我们手动为菜单项分配的)。不管怎么说第三个参数应该是一个字符串(不管是菜单还是项,应该有个名字吧)。

如果是新添加的POPUP子菜单,应该重绘菜单栏来显示它。重绘菜单的方法是drawmenubar从它的名字我们可以看出来,这是CWnd或其派生类的方法。

题外话,每个键都有一个键值,nChar是一个整型,表示这个键值。我们想知道某个键值,可以用ONCHAR把它显示出来。回车(Carrige return)是13,也就是0x0d。

添加动态菜单的响应函数有一个技巧,手动添加比较麻烦,可以在资源管理器中编辑静态菜单,添加响应函数,再把这个静态菜单删除,但是响应函数和消息映射还有菜单项的ID号都会留下来,偷梁换柱。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值