2010-07-14 38 views
0

我有一個派生自CTreeCtrl的類。在某些情況下,用戶可能正在編輯它,並且我想以編程方式取消當前正在進行的編輯。如何以編程方式結束編輯CTreeCtrl?

我該怎麼做?似乎沒有任何適當的功能可以這樣做,或者如果我必須發送一些消息,我不會立即明白我應該發送什麼消息。

回答

1

我相信這是可能通過發送樹控制的TVM_ENDEDITLABELNOW消息,或者通過使用TreeView_EndEditLabelNow宏。

+0

呵,並且有一個CTreeCtrl的EndEditLabelNow()方法。在我年老的時候我必須失明......謝謝你的回答! – Peter 2010-07-18 22:44:46

0

要確定用戶是否正在編輯標籤,您必須等待整形消息: TVN_BEGINLABELEDITTVN_ENDLABELEDIT

要取消,只是將焦點設置到另一個節點。

+0

是的,我知道TVN_ENDLABELEDIT是什麼,但我想知道我是怎麼編輯控件生成其中的一個。我很欣賞這個重點建議,雖然這看起來有些尷尬 - 我必須找到另一個節點(可能不存在),然後我不想讓它集中在後面......謝謝你的建議。 – Peter 2010-07-15 22:31:57

0

所以,我終於發現,我可以僞造一個退出按鈕按下編輯控件:

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

這似乎是適當取消編輯。