您的位置:首页 > 产品设计 > UI/UE

菜单响应函数: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。。。。。。的模式显示,每次自能显示一种格式,这个就相当的有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: