首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么把多个命令菜单命令ID映射到一个函数?

2012-06-12 
如何把多个命令菜单命令ID映射到一个函数???以前的一个MDI程序,将许多菜单ID函数单独对应一个命令,状态更

如何把多个命令菜单命令ID映射到一个函数???
以前的一个MDI程序,将许多菜单ID函数单独对应一个命令,状态更新函数也是。

BEGIN_MESSAGE_MAP
  ON_COMMAND(IDC_TEST1,OnTest1)
  ON_COMMAND(IDC_TEST3,OnTest3)

  ......
  ON_UPDATE_COMMAND_UI(IDC_TEST1,OnTest1UpdateUI)
  ON_UPDATE_COMMAND_UI(IDC_TEST3,OnTest3UpdateUI)
 
END_MESSAGE_MAP

 void CMainFrame::OnTest1()
  {
  //......

  }
 void CMainFrame::OnTest3()
  {
  //......

  }

 void CMainFrame::OnTest1UpdateUI(*pCmdUI)
 
 {

}

void CMainFrame::OnTest3UpdateUI(*pCmdUI)
 
 {
//.......
   
}


 我想把函数精简,多个ID映射到一个函数处理,状态更新函数也是。
 但是不能使用ON_COMMAND_RANGE和ON_UPDATE_COMMAND_UI_RANGE 因为以前的ID号不一定是连续的。

如何实现????谢谢

[解决办法]
void CMainFrame::OnMxCommandEx(WPARAM nCtrlId, LPARAM)
{
switch (nCtrlId)
{
case CTRLID_TITLEBAR_BUTTON_SETUP:
{
CDlgSetup dlg;
if (dlg.DoModal() == IDOK)
{
LoadLanguage();
}
}
break;

case CTRLID_TITLEBAR_BUTTON_SYSLOG:
{
CDlgSysLog dlg;
dlg.DoModal();
}
break;
}
}
楼主说的是不是这个?????
[解决办法]
ID如果是连续的,那么就很容易了,用COMMAND_RANGE

即使是不连续的,也可以做到映射到同一组函数

C/C++ code
  ON_COMMAND(IDC_TEST1,OnCommonFun)  ON_COMMAND(IDC_TEST2,OnCommonFun)  ON_COMMAND(IDC_TEST3,OnCommonFun)  ON_COMMAND(IDC_TEST4,OnCommonFun)  ON_COMMAND(IDC_TEST5,OnCommonFun)  ......  ON_UPDATE_COMMAND_UI(IDC_TEST1,OnCommonUpdateUI)  ON_UPDATE_COMMAND_UI(IDC_TEST2,OnCommonUpdateUI)  ON_UPDATE_COMMAND_UI(IDC_TEST3,OnCommonUpdateUI)  ON_UPDATE_COMMAND_UI(IDC_TEST4,OnCommonUpdateUI)  ON_UPDATE_COMMAND_UI(IDC_TEST5,OnCommonUpdateUI)
[解决办法]
怎么弄都可以啊,上面方法都能实现

热点排行