菜单响应函数:ON_COMMAND和ON_UPDATE_COMMAND_UI,ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE
2010-12-24 13:59
465 查看
一、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。。。。。。的模式显示,每次自能显示一种格式,这个就相当的有用。
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。。。。。。的模式显示,每次自能显示一种格式,这个就相当的有用。
相关文章推荐
- ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE
- ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE
- ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE
- VC下许多相同的控件事件处理方法(ON_CONTROL_RANGE、ON_COMMAND_RANGE、ON_UPDATE_COMMAND_UI_RANGE )
- 自定义消息块 ON_COMMAND_RANGE,ON_UPDATE_COMMAND_UI_RANGE
- ON_UPDATE_COMMAND_UI_RANGE
- ON_COMMAND与ON_UPDATE_COMMAND_UI区别
- Dialog 中使用ON_UPDATE_COMMAND_UI
- ON_COMMAND与ON_UPDATE_COMMAND_UI
- ON_UPDATE_COMMAND_UI
- ON_COMMAND和ON_UPDATE_COMMAND_UI
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
- 对话框中使用ON_UPDATE_COMMAND_UI更新菜单状态
- MFC对话框响应ON_UPDATE_COMMAND_UI事件
- MFC:ON_UPDATE_COMMAND_UI和ON_COMMAND消息的区别
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
- 在对话框里面使用ON_UPDATE_COMMAND_UI映射工具条
- CFormView 怎样使用ON_UPDATE_COMMAND_UI
- MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
- Dialog 中使用ON_UPDATE_COMMAND_UI