关于基于对话框应用程序使用菜单的Setcheck()函数出现的问题
我写了个基于对话框应用程序,我把系统的菜单加入到对话框里面,但我的菜单需要用SetCheck()设置选中方式,但等我写好了以后发现这么一回事情:就是我用在我更新消息如下:
消息映射:ON_UPDATE_COMMAND_UI_RANGE( ID_1,ID_24, OnUpdateCheck )
处理函数:void CEFONTDlg::OnUpdateCheck(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck( m_ChooseCheckMenu == MenuIDToIndex(pCmdUI->m_nID) ;
}//其中MenuIDToIndex是我将菜单id更换为一个UINT型值然后和同为UINT
//的m_ChooseCheckMenu 比较
我老是选不中,然后我开始调试,发现原来基于对换框的时候我跟踪SetCheck时候发现程序调用了Mfc里面wincore.cpp的一个如下的函数
void CTestCmdUI::SetCheck( int )
{
// do nothing -- just want to know about calls to Enable
}
函数里面什么也不做,这个CTestCmdUI类一查发现他是从CCmdUI继承过来的,但基于视图方式我调试发现SetCheck里面有内容的,这是怎么回事情?请大虾把其中原理说个清楚好吗?我基于对换框的该如何解决这个问题?真是想不通,同是调用CCmdUI类其同一个setcheck()函数调试发现调的库里面setcheck()代码不一样这如何解决?