Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление записи в поле редактирования, Возникает небольшая проблема 
:(
    Опции темы
Chiren
Дата 21.4.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.10.2009

Репутация: нет
Всего: нет



Всем добрый день. Меня озадачила небольшая проблема. Помогите разобраться.

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

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

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

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

Теперь после нескольких сотен строк, выведенных в поле, текст просто перестаёт выводиться, хотя в первом случае всё работало (хоть и медленнее), то есть максимальная длина текста не достигнута. Почему так происходит и как этого избежать?
PM MAIL   Вверх
Andrey44
Дата 22.4.2010, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



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

Код

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

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


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Chiren
Дата 22.4.2010, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.10.2009

Репутация: нет
Всего: нет



Разницa - size_t вместо int
К сожалению, это не решает проблемы. Так же вывод в поле прекращается на определённом этапе.
PM MAIL   Вверх
Albor
Дата 22.4.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 7
Всего: 9



Попробуй так:
Код

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

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

Добавлено через 4 минуты и 2 секунды
А зачем тебе editText? Ведь в любой момент текст можно считать из эдита.
PM MAIL ICQ   Вверх
viktorrr
Дата 25.4.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 10.3.2010

Репутация: 1
Всего: 1



Доброго времени суток.
если проблема еще не решена то просим проект в студию, так сказать "материал для исследования".
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.