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