Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Добавление записи в поле редактирования


Автор: Chiren 21.4.2010, 22:27
Всем добрый день. Меня озадачила небольшая проблема. Помогите разобраться.

В моей программе есть многострочное поле редактирования, куда пишется отчёт по ходу работы программы. Каждый раз, когда надо дописать newText в поле, я делаю сдедующее 
Код

editText += newText;
pEdit->SetWindowText(editText);

Всё хорошо работает. Однако дописывать надо очень много раз, получается отчёт на сотни строк, поэтому всё это делается долго и тормозит работу программы.
Тогда я делаю попытку не записывать текст каждый раз заново, а дописывать в конец, примерно так
Код

int l = editText.GetLength();
pRep->SetSel(l, l+1);                 //делаю выделение в конце записи
pRep->ReplaceSel(newText );   //и заменяю выделенное на текст, который нужно добавить
editText += newText;

Теперь после нескольких сотен строк, выведенных в поле, текст просто перестаёт выводиться, хотя в первом случае всё работало (хоть и медленнее), то есть максимальная длина текста не достигнута. Почему так происходит и как этого избежать?

Автор: Andrey44 22.4.2010, 05:27
Цитата(Chiren @  21.4.2010,  22:27 Найти цитируемый пост)
Почему так происходит и как этого избежать?

Код

size_t l = editText.GetLength();
pRep->SetSel(l, l+1);                 //делаю выделение в конце записи
pRep->ReplaceSel(newText );   //и заменяю выделенное на текст, который нужно добавить
editText += newText;

Заметили разницу?

Автор: Chiren 22.4.2010, 08:51
Разницa - size_t вместо int
К сожалению, это не решает проблемы. Так же вывод в поле прекращается на определённом этапе.

Автор: Albor 22.4.2010, 10:43
Попробуй так:
Код

pRep->SetSel(-1, -1);                 

это избавит тебя от вызова GetLength();

Добавлено через 4 минуты и 2 секунды
А зачем тебе editText? Ведь в любой момент текст можно считать из эдита.

Автор: viktorrr 25.4.2010, 20:27
Доброго времени суток.
если проблема еще не решена то просим проект в студию, так сказать "материал для исследования".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)