如何把多个命令菜单命令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
即使是不连续的,也可以做到映射到同一组函数
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)
[解决办法]
怎么弄都可以啊,上面方法都能实现