Возможность редактирования текста
элемента
Для получения возможности редактирования
текста, дерево должно быть создано с флагом TVS_EDITLABELS.
Его можно установить в редакторе ресурсов, при
вызове функции Create() или PreCreateWindow(), если Вы
используете CTreeView класс.
Затем Вы должны перехватить и обработать
сообщения TVN_BEGINLABELEDIT и TVN_ENDLABELEDIT. По правде
говоря, никакой необходимости нет перехватывать TVN_BEGINLABELEDIT,
но таким методом можно ограничить длину текста,
вводимого пользвателем.
void COutline::OnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// Устанавливаем лимит в 127 символов
GetEditControl()->LimitText(127);
*pResult = 0;
}
Наиглавнейшей идеей в этой статье, стал
перехват TVN_ENDLABELEDIT сообщения, которое
позволяет нам обновлять внутренние структуры
данных, которые использует элемент управления.
Ввод следующих строк необходим для того, чтобы
после конца редактирования обновления вступали
в силу, если же этого не сделать, то строка
вернется к исходному значению.
void COutline::OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
//Устанавливаем result в TRUE для принятия изменений
*pResult = TRUE;
}
Источник: ProtoSphere
|