Mfc SetCheck-in\u-UPDATE\u命令\u-UI功能无法正常工作
在这个函数中,Mfc SetCheck-in\u-UPDATE\u命令\u-UI功能无法正常工作,mfc,Mfc,在这个函数中,pCmdUI->SetText可以工作,但是pCmdUI->SetCheck不能正常工作 我有一个菜单项,我想点击它并在菜单项中显示一个检查钩子,但我在更新命令的UI上添加了一个消息方法,在这个函数中我可以使用pCmdUI->SetText(“xxx”),菜单项文本会按预期发生变化,但是如果我使用pCmdUI->SetCheck(TRUE)或pCmdUI->SetRadio(TRUE),那么,它只是给我显示了一个方形框,而不是“勾选钩” 这里发生了什么 这是我的代码: void C
pCmdUI->SetText
可以工作,但是pCmdUI->SetCheck
不能正常工作
我有一个菜单项,我想点击它并在菜单项中显示一个检查钩子,但我在更新命令的UI上添加了一个消息方法,在这个函数中我可以使用pCmdUI->SetText(“xxx”)
,菜单项文本会按预期发生变化,但是如果我使用pCmdUI->SetCheck(TRUE)
或pCmdUI->SetRadio(TRUE)
,那么,它只是给我显示了一个方形框,而不是“勾选钩”
这里发生了什么
这是我的代码:
void CBaoSteelBaseView::OnUpdateTrueImage(CCmdUI *pCmdUI)
{
pCmdUI->Enable(pImage!=NULL && !pImage->IsEmpty());
if (systemInfo.showTrueImage)
{
pCmdUI->SetCheck(TRUE);
}
else if (!systemInfo.showTrueImage)
{
pCmdUI->SetCheck(FALSE);
}
}
不是答案,只是旁注:
你的代码太复杂了。您可以将其替换为以下内容:
void CBaoSteelBaseView::OnUpdateTrueImage(CCmdUI *pCmdUI)
{
pCmdUI->Enable(pImage!=NULL && !pImage->IsEmpty());
if (systemInfo.showTrueImage)
{
pCmdUI->SetCheck(TRUE);
}
else
{
pCmdUI->SetCheck(FALSE);
}
}
或者更简单:
void CBaoSteelBaseView::OnUpdateTrueImage(CCmdUI *pCmdUI)
{
pCmdUI->Enable(pImage!=NULL && !pImage->IsEmpty());
pCmdUI->SetCheck(systemInfo.showTrueImage);
}
你需要详细说明你的问题。站在这里,没有人知道你真正想要什么。是的,现在更清楚了,但请不要在评论中澄清,而是把这些信息放在那里。可能是因为你有一个中文窗口。你能检查一下它在英文窗口上是否正常工作吗?您正在使用哪个Visual Studio,您有哪些Windoes(7、8、10、XP等)?但在其他菜单项中,我可以使用这种方式pCmdUI->SetCheck(True)
来实现此“检查挂钩”,但这不起作用。不太清楚。你是说pCmdUI->SetCheck(TRUE)
在一个菜单中正常工作,但在另一个菜单中却不能正常工作?SetCheck
不接受BOOL
参数,而是接受int
。0=未选中,1=已选中,2=不确定。@MariusBancila这是正确的,但实际上没有任何改变,因为TRUE
定义为1
。