【问题标题】:How to programmatically end editing of a CTreeCtrl?如何以编程方式结束 CTreeCtrl 的编辑?
【发布时间】:2010-07-19 02:06:39
【问题描述】:

我有一个从 CTreeCtrl 派生的类。在某些情况下,用户可能正在编辑它,我想以编程方式取消当前正在进行的编辑。

我该怎么做?该类似乎没有任何适当的功能可以做到这一点,或者如果我必须向它发送一些消息,我不会立即明白我应该发送什么消息。

【问题讨论】:

    标签: mfc winapi


    【解决方案1】:

    我相信这可以通过向树控件发送TVM_ENDEDITLABELNOW 消息或使用TreeView_EndEditLabelNow 宏来实现。

    【讨论】:

    • 呵呵,还有CTreeCtrl的EndEditLabelNow()方法。我一定是在我年老的时候失明了......谢谢你的回答!
    【解决方案2】:

    要确定用户是否正在编辑标签,您必须等待以下消息: TVN_BEGINLABELEDITTVN_ENDLABELEDIT

    要取消,只需将焦点设置到另一个节点即可。

    【讨论】:

    • 是的,我知道 TVN_ENDLABELEDIT 是什么,但我想知道如何让编辑控件生成其中之一。我很欣赏焦点建议,虽然这似乎有点尴尬 - 我必须找到另一个节点(可能不存在),然后我真的不希望它在之后集中......不过感谢你的建议。
    【解决方案3】:

    所以我最终发现我可以伪造 Escape 按钮按下编辑控件:

    tree.GetEditControl()->SendMessage(WM_KEYDOWN, VK_ESCAPE, 1);
    

    这似乎适当地取消了编辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多