[MFC]Shapes程序(3):响应菜单命令、菜单项的跟新

1. 菜单项被击中的消息:

    1) 一般关于菜单项产生最平凡的几个消息莫过于WM_INITMENU、WM_INITMENUPOPUP、WM_MENUSELECT这三个消息;

    2) WM_INITMENU在顶层菜单项被击中时产生,通知应用程序用户已击中一个顶层菜单项,要做好准备了;

    3) WM_INITMENUPOPUP消息会在顶层菜单项被击中后、子菜单被下拉之前产生,你可能会问了,直接在处理WM_INITMENU时下来菜单不就行了,为啥还有等这么一个消息呢?因为可以在这个消息的处理中更新菜单栏UI界面的状态,比如用户将工具栏显示了出来,此时就可以在新弹出的子菜单的“工具栏”选项旁边的复选框中填上一个勾;

    4) WM_SELECTMENU会在子菜单选中加亮条上下移动时产生,用以报告加亮条的最新位置;


2. 菜单命令的消息映射:

    1) 用户最关心的往往是菜单项的WM_COMMAND命令,即某个能产生应用程序命令的菜单项被击中后产生的命令;

    2) 这种消息的参数wParam的低字位保留了该菜单项的命令ID,用户可以根据该ID将此类消息准确地映射到相应的消息响应函数中去;

    3) 消息映射条目:条目名为ON_COMMAND,后面两个参数和一般消息条目不太一样,一般条目的第一个参数是消息ID,第二个参数是映射的消息响应函数名,如果消息ID以及响应函数都是MFC事先定义好的,则宏参数不写,但不过ON_COMMAND的映射是以命令ID为基准的,因此第一个参数是命令ID,第二个参数不变,仍然是响应函数名,例如:

ON_COMMAND(ID_FILE_NEW, OnFileNew)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)

!命令处理函数的名称用户可以随意去,不像其他WM_消息,消息ID和响应函数名都是MFC预定义好的,程序员不能改变,想改变除非修改MFC源码,而命令相应则不一样,首先命令ID是可以用户随意取的,因此MFC对命令响应函数的名称也不作要求,可以随意取,比如:

ON_COMMAND(ID_FILE_NEW, CreateNewFile)
    4) 响应函数原型无参无返回值:afx_msg void OnFileExit();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值