C ++ MFC更改菜单焦点

时间:2017-08-21 14:09:31

标签: c++ view menu mfc

我的视图/窗口左侧有一个树视图,右边是列表样式视图,显示与右侧所选树节点对应的“stuff”。与Windows资源管理器的外观和工作方式非常相似。 “东西”可以显示为列表,大图标或小图标或信息。

我遇到的问题是,如果选择的一个树节点是“占位符”节点,则从“编辑”菜单运行“全选”,然后“编辑”菜单中的“删除”选项显示为灰色即使RHS视图中的所有项目都标记为已选中,并且实际上可以安全删除。 这可以通过选择远离树节点到另一个节点,选择回到同一个树节点,然后选择不同的视图来修复:列表,大图标,小图标或信息视图,而不是最初选择的。

跟踪语句告诉我,在第二个工作场景中,右侧视图中的项目被传递给“我可以删除”功能,而当事情不起作用时,它是传递的树视图节点的名称到“我可以删除”功能。当“我可以删除”功能返回true时,在“编辑”菜单中启用“删除”选项,当错误时启用“删除”选项。

当从“编辑”菜单中选择“全选”以使此工作始终正常时,是否有一种方法可以强制“焦点”以获得更好的单词到右侧列表,信息等视图?

我认为问题在于编辑菜单是不同的(上下文敏感),具体取决于哪个视图('它'认为)是活动的,某些地方是交叉的,并且树视图的编辑菜单应该显示用于RHS节点列表视图。它正在弄清楚如何解决这个问题我正在努力解决。

由于

1 个答案:

答案 0 :(得分:0)

您遇到MFC命令路由问题。

检查您为命令放置处理程序的位置。

按以下顺序搜索命令处理程序:

  1. Active view
  2. 文档
  3. 文档模板
  4. 框架窗口
  5. 应用。
  6. 我想你在视图中有处理程序,焦点(活动视图)改变了

    您可以更改命令路由i.E.在框架中并询问附加到文档的所有视图以处理命令...您必须为此覆盖OnCmdMsg

    查看更多详情here