mfc怎么实现两个菜单项一个打勾另一就去勾,还有多个呢?
ON_UPDATE_COMMAND_UI(ID_PARAMETER_COM1,&CdriverDlg::OnUpdateCheck1)ON_COMMAND(ID_PARA...
ON_UPDATE_COMMAND_UI(ID_PARAMETER_COM1, &CdriverDlg::OnUpdateCheck1)
ON_COMMAND(ID_PARAMETER_COM1, &CdriverDlg::OnCheck1)
ON_UPDATE_COMMAND_UI(ID_PARAMETER_COM2, &CdriverDlg::OnUpdateCheck2)
ON_COMMAND(ID_PARAMETER_COM2, &CdriverDlg::OnCheck2)
static BOOL state = TRUE;
void CdriverDlg::OnUpdateCheck1(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(state);
}
void CdriverDlg::OnCheck1(CCm)
{
state=!state;
}
void CdriverDlg::OnUpdateCheck2(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(state);
}
void CdriverDlg::OnCheck2()
{
state=!state;
}
这个实现了两个菜单项之间上述的互斥,但是点自己也去掉勾了,多个更不行了,怎么控制呢? 展开
ON_COMMAND(ID_PARAMETER_COM1, &CdriverDlg::OnCheck1)
ON_UPDATE_COMMAND_UI(ID_PARAMETER_COM2, &CdriverDlg::OnUpdateCheck2)
ON_COMMAND(ID_PARAMETER_COM2, &CdriverDlg::OnCheck2)
static BOOL state = TRUE;
void CdriverDlg::OnUpdateCheck1(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(state);
}
void CdriverDlg::OnCheck1(CCm)
{
state=!state;
}
void CdriverDlg::OnUpdateCheck2(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(state);
}
void CdriverDlg::OnCheck2()
{
state=!state;
}
这个实现了两个菜单项之间上述的互斥,但是点自己也去掉勾了,多个更不行了,怎么控制呢? 展开
2个回答
展开全部
在单击事件里面设置啊
点击的时候设置其他项的状态
点击的时候设置其他项的状态
追问
GetMenu()->GetSubMenu(1)->CheckMenuItem(ID_PARAMETER_COM1,MF_BYCOMMAND | MF_CHECKED);
GetMenu()->GetSubMenu(1)->CheckMenuItem(ID_PARAMETER_COM2,MF_BYCOMMAND |MF_UNCHECKED );
这样是可以,但是很傻,多项就很乱
追答
怎么会乱呢
为每个菜单添加相应的事件
int Mode;
enum {
mode1,
mode2,
mode3
};
void CTestView::OnTestone()
{
Mode=mode1;
}
void CTestView::OnTesttwo()
{
Mode=mode2;
}
void CTestView::OnTestthree()
{
Mode=mode3;
}
void CTestView::OnUpdateTestone(CCmdUI *pCmdUI)
{
pCmdUI->SetRadio(Mode==mode1);
}
void CTestView::OnUpdateTesttwo(CCmdUI *pCmdUI)
{
pCmdUI->SetRadio(Mode==mode2);
}
void CTestView::OnUpdateTestthree(CCmdUI *pCmdUI)
{
pCmdUI->SetRadio(Mode==mode3);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询