Требуется редактировать элементы дерева в модальном диалоге, но при нажатии на Enter диалог закрывается :(
Пробовал лечить при помощи PreTranslateMessage, но получилось что-то не то:
редактируемый текст после нажатия изменяется на первоначальный. Как это можно исправить?
А>Требуется редактировать элементы дерева в модальном диалоге, но при нажатии на Enter диалог закрывается
А>Пробовал лечить при помощи PreTranslateMessage, но получилось что-то не то: А>редактируемый текст после нажатия изменяется на первоначальный. Как это можно исправить?
Перехватить событие
TVN_ENDLABELEDIT
В обработчике если данные корректны, то
*pResult = 1 иначе отмена *pResult = 0
void CXXXDlg::OnEndlabeleditTree(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR; // Содержит новые данные
*pResult = 1;
}
С уважением, OlegO.
Re[2]: Редактирование CTreeCtrl в диалоге
От:
Аноним
Дата:
27.04.02 06:42
Оценка:
Здравствуйте OlegO, Вы писали:
OO>Здравствуйте Аноним, Вы писали:
OO>Перехватить событие
OO>TVN_ENDLABELEDIT
OO>В обработчике если данные корректны, то OO>*pResult = 1 иначе отмена *pResult = 0
OO>
OO>void CXXXDlg::OnEndlabeleditTree(NMHDR* pNMHDR, LRESULT* pResult)
OO>{
OO> TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR; // Содержит новые данные
OO> *pResult = 1;
OO>}
OO>
Уже додумался, кстати его еще и полылать при этом надо самому
из PreTranslateMessage :)
А>Требуется редактировать элементы дерева в модальном диалоге, но при нажатии на Enter диалог закрывается
А>Пробовал лечить при помощи PreTranslateMessage, но получилось что-то не то: А>редактируемый текст после нажатия изменяется на первоначальный. Как это можно исправить?
Здравствуйте Аноним, Вы писали:
А>Уже додумался, кстати его еще и полылать при этом надо самому А>из PreTranslateMessage
Странно он у меня прекрасно в ON_NOTIFY(TVN_ENDLABELEDIT, IDC_ююю, ююю) ловится
С уважением, OlegO.
Re[4]: Редактирование CTreeCtrl в диалоге
От:
Аноним
Дата:
27.04.02 07:28
Оценка:
Здравствуйте OlegO, Вы писали:
OO>Здравствуйте Аноним, Вы писали:
А>>Уже додумался, кстати его еще и полылать при этом надо самому А>>из PreTranslateMessage :)
OO>Странно он у меня прекрасно в ON_NOTIFY(TVN_ENDLABELEDIT, IDC_ююю, ююю) ловится :???:
В диалоге?
Имхо у диалога система сама обрабатывает сообщения, то есть WindowProc "отсутствует"
Здравствуйте Кирпа В.А., Вы писали:
КВ>Здравствуйте Аноним, Вы писали:
А>>Требуется редактировать элементы дерева в модальном диалоге, но при нажатии на Enter диалог закрывается
А>>Пробовал лечить при помощи PreTranslateMessage, но получилось что-то не то: А>>редактируемый текст после нажатия изменяется на первоначальный. Как это можно исправить?
КВ>В OnOk()
OnOK
КВ>сделай так
С таким вариантом пользователь не сможет отменить редактирование, лучше обрабатывать и OnCancle или так:
BOOL CWallerDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base classif (pMsg->message == WM_KEYDOWN &&
(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE))
{
m_tree.SetFocus();
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
КВ>
Приятного времени суток
Re: Редактирование CTreeCtrl в диалоге
От:
Аноним
Дата:
27.04.02 16:59
Оценка:
Здравствуйте Аноним, Вы писали:
А>Требуется редактировать элементы дерева в модальном диалоге, но при нажатии на Enter диалог закрывается :(
А>Пробовал лечить при помощи PreTranslateMessage, но получилось что-то не то: А>редактируемый текст после нажатия изменяется на первоначальный. Как это можно исправить?