菜单响应函数:ON_COMMAND和ON_UPDATE_COMMAND_UI,ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE

 一、ON_COMMAND 

    

 

ON_COMMAND(id, memberFxn )

Parameters:

id ---------------------------------The command ID. //菜单定义的资源ID

memberFxn ---------------------The name of the message-handler function to which the command is mapped.


                                                     //菜单ID资源映射的消息处理函数,菜单功能的执行函数

 

二、ON_UPDATE_COMMAND_UI

ON_UPDATE_COMMAND_UI(id, memberFxn )

  Parameters:

  id -----------------------------------The message ID. //菜单定义的资源ID

memberFxn ------------------------The name of the message-handler function to which the message is mapped.

                                                        //菜单ID资源映射的更新菜单函数,更新菜单的状态

三、ON_COMMAND_RANGE

ON_COMMAND_RANGE(id1, id2, memberFxn )

Parameters:

id1----------------------------Command ID at the beginning of a contiguous range of command IDs.

                                                      //一组菜单的开始菜单ID

id2----------------------------Command ID at the end of a contiguous range of command IDs.

                                                      //一组菜单的结束菜单ID

memberFxn-------------------The name of the message-handler function to which the commands are mapped

                                                    //菜单ID资源映射的消息处理函数,菜单功能的执行函数

  四、ON_UPDATE_COMMAND_UI_RANGE

  ON_UPDATE_COMMAND_UI_RANGE(id1, id2, memberFxn )

Parameters:

id1--------------------Command ID at the beginning of a contiguous range of command IDs.

                                        //一组菜单的开始菜单ID 

id2--------------------Command ID at the end of a contiguous range of command IDs.

                                        //一组菜单的结束菜单ID 

memberFxn-----------The name of the update message-handler function to which the commands are mapped.

                                        //菜单ID资源映射的更新菜单函数,更新菜单的状态

There is no automatic support for message map ranges, so you must place the macro yourself.

//对于三和四MFC的消息映射没有自动的支持,你必须自己在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加。

由于一和二的使用相对简单,这里就不举例子了。下面给出如何使用三和四的例子:

在MyView.h文件中添加如下:

 afx_msg void OnViewWinnum(UINT nID);
 afx_msg void OnUpdateViewWinnumRange(CCmdUI *pCmdUI);

在MyView.cpp文件中添加如下:

BEGIN_MESSAGE_MAP(CMyView, CFormView)

ON_COMMAND_RANGE(ID_VIEW1, ID_VIEW5, &CMyView::OnViewNum)
ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW1, ID_VIEW5, OnUpdateOnViewNumRange)

END_MESSAGE_MAP()

void CMyView::OnViewNum(UINT nID)
{
     switch(nID)
    {
         case ID_VIEW1:
         break;
         case ID_VIEW2:
         break;
         case ID_VIEW3:
         break;
         case ID_VIEW4:
         break;
        case ID_VIEW5:
        break;
    }

}
void CMyView::OnUpdateOnViewNumRange(CCmdUI *pCmdUI)
{
 pCmdUI->SetRadio( UINT(ID_VIEW1+“表达式”) == pCmdUI->m_nID );

     //“表达式”根据你的程序来标识是哪个菜单项
}

这样就实现了一组菜单的单选功能,如果你的菜单项是互斥的关系,也就是在当前的操作中只能执行一种功能。比如要把一个窗体分割成1x1,2x2,3x3,4x4。。。。。。的模式显示,每次自能显示一种格式,这个就相当的有用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值