以前的一个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号不一定是连续的。如何实现????谢谢
如
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号不一定是连续的。如何实现????谢谢
{
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;
}
}
楼主说的是不是这个?????
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)
---------
你不是说多个ID共用一个命令响应吗