我用向导生成一个对话框程序,并指定一个我设计的菜单,菜单其中有一个check菜单,
我用如下方法改变不了菜单的SetCheck状态。为什么啊!
菜单的消息映射是用类向导加的。m_ShadowFlag初始为真
void CMyDlg::OnShadowMenu()
{
// TODO: Add your command handler code here
m_ShadowFlag=!m_ShadowFlag;
}void CMyDlg::OnUpdateShadowMenu(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
//改变菜单的钩选状态
pCmdUI->SetCheck(m_ShadowFlag);
}
我用如下方法改变不了菜单的SetCheck状态。为什么啊!
菜单的消息映射是用类向导加的。m_ShadowFlag初始为真
void CMyDlg::OnShadowMenu()
{
// TODO: Add your command handler code here
m_ShadowFlag=!m_ShadowFlag;
}void CMyDlg::OnUpdateShadowMenu(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
//改变菜单的钩选状态
pCmdUI->SetCheck(m_ShadowFlag);
}
就是菜单状态不变啊!急急啊!菜单我都删了建,建了删好几次啦!
void CKkkDlg::OnMenuitem()
{
// TODO: Add your command handler code here
if(m_ShadowFlag==0)
m_ShadowFlag=1;
else
m_ShadowFlag=0;
}void CKkkDlg::OnUpdateMenuitem(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_ShadowFlag);
}
改成int还是不行啊!那位高手帮看一看,或试一试,我连程序与菜单重建了好几遍啦!
控制变量:m_ShadowFlag必须在InitInstance()里进行初始化!
另外:我试了改用如下方法
void CMyDlg::OnUpdateMenuitem32777(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
CMenu *hmnu = GetMenu(); //得到菜单
if(m_ShadowFlag)
{
CheckMenuItem(hmnu->m_hMenu, ID_MENUITEM32777, MF_CHECKED);//菜单选中
}
else
{
CheckMenuItem(hmnu->m_hMenu, ID_MENUITEM32777, MF_UNCHECKED);//菜单不选中
}
}
可以改变对话框中的主菜单的CHECK状态了,但是我还在对话框中设置了一个弹出菜单,
我主要是想改变弹出菜单中某个菜单项的CHECK状态,还是用如上方法,就是改不了啊!
我想是不是CMenu *hmnu = GetMenu(); //只是得到窗口主菜单,而不是我的弹出菜单的柄啊!?