Как программно завершить редактирование CTreeCtrl? - PullRequest
0 голосов
/ 15 июля 2010

У меня есть класс, полученный из CTreeCtrl. В некоторых случаях пользователь может редактировать его, и я хотел бы программно отменить редактирование, которое в данный момент выполняется.

Как мне это сделать? Кажется, не существует какой-либо подходящей функции класса, которая бы это делала, или, если мне нужно отправить ей какое-то сообщение, для меня не сразу очевидно, что это за сообщение, которое я должен отправить.

Ответы [ 3 ]

1 голос
/ 18 июля 2010

Я полагаю, что это возможно, посылая элементу управления деревом сообщение TVM_ENDEDITLABELNOW или используя макрос TreeView_EndEditLabelNow .

0 голосов
/ 16 июля 2010

Итак, в конце концов я обнаружил, что могу подделать нажатие кнопки Escape для элемента управления редактирования:

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

Похоже, это отменяет редактирование соответствующим образом.

0 голосов
/ 15 июля 2010

Чтобы определить, редактирует ли пользователь метку, нужно дождаться следующих сообщений: TVN_BEGINLABELEDIT и TVN_ENDLABELEDIT.

Для отмены просто установите фокус на другой узел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...