【发布时间】:2010-07-19 02:06:39
【问题描述】:
我有一个从 CTreeCtrl 派生的类。在某些情况下,用户可能正在编辑它,我想以编程方式取消当前正在进行的编辑。
我该怎么做?该类似乎没有任何适当的功能可以做到这一点,或者如果我必须向它发送一些消息,我不会立即明白我应该发送什么消息。
【问题讨论】:
我有一个从 CTreeCtrl 派生的类。在某些情况下,用户可能正在编辑它,我想以编程方式取消当前正在进行的编辑。
我该怎么做?该类似乎没有任何适当的功能可以做到这一点,或者如果我必须向它发送一些消息,我不会立即明白我应该发送什么消息。
【问题讨论】:
我相信这可以通过向树控件发送TVM_ENDEDITLABELNOW 消息或使用TreeView_EndEditLabelNow 宏来实现。
【讨论】:
要确定用户是否正在编辑标签,您必须等待以下消息:
TVN_BEGINLABELEDIT 和 TVN_ENDLABELEDIT。
要取消,只需将焦点设置到另一个节点即可。
【讨论】:
所以我最终发现我可以伪造 Escape 按钮按下编辑控件:
tree.GetEditControl()->SendMessage(WM_KEYDOWN, VK_ESCAPE, 1);
这似乎适当地取消了编辑。
【讨论】: