Помогите, пожалуйста, решить следующую проблему.
Используется VisualStudio 7.0, C++.
1) Создаю обычный модальный диалог, добавляю на него CTreeView.
Мне нужно, чтобы пользователь мог редактировать метки на узлах дерева.
Добавляю обработчик события EndLabelEdit, пишу туда код, запускаю. Обнаруживается следующий косяк: пользователь нормально начинает редактировать метку, но когда нажимает Enter, событие почему-то обрабатывается диалогом и происходит выход. Естественно, кнопку "OK", созданную визардом и весь код к ней я давно удалил.
Спрашивается, как по-нормальному избежать обработки Enter'a самим диалогом?
2) Переопределяю метод onOK в своем диалоге, ничего там не делаю. Диалог перестал закрываться по Enter, однако такой способ кажется мне извратом. ВОзникла следующая проблема: пользователь нормально редактирует метку, но когда нажимает Enter, ничего не происходит. Событие EndLabelEdit не вызывается.
Подскажите, пожалуйста, что я делаю не так. Если есть возможность, поделитесь примером.
Заранее благодарен.
Здравствуйте, moodwin, Вы писали:
M>Помогите, пожалуйста, решить следующую проблему.
M>Используется VisualStudio 7.0, C++.
M>1) Создаю обычный модальный диалог, добавляю на него CTreeView.
M>Мне нужно, чтобы пользователь мог редактировать метки на узлах дерева.
M>Добавляю обработчик события EndLabelEdit, пишу туда код, запускаю. Обнаруживается следующий косяк: пользователь нормально начинает редактировать метку, но когда нажимает Enter, событие почему-то обрабатывается диалогом и происходит выход. Естественно, кнопку "OK", созданную визардом и весь код к ней я давно удалил.
M>Спрашивается, как по-нормальному избежать обработки Enter'a самим диалогом?
M>2) Переопределяю метод onOK в своем диалоге, ничего там не делаю. Диалог перестал закрываться по Enter, однако такой способ кажется мне извратом. ВОзникла следующая проблема: пользователь нормально редактирует метку, но когда нажимает Enter, ничего не происходит. Событие EndLabelEdit не вызывается.
M>Подскажите, пожалуйста, что я делаю не так. Если есть возможность, поделитесь примером.
M>Заранее благодарен.
Я бы предложил такой обработчик
void MyDialog::OnOk()
{
if (m_Tree.GetEditControl() != NULL)
{
m_Tree.SetFocus();
return;
}
CDialog::OnOk();
}