Почему wxTextCtrl так медленно отображает текст? - PullRequest
2 голосов
/ 24 января 2010

У меня есть wxTextCtrl, и мне нужно поместить в него очень большую строку. (Как строка 15 МБ) Единственная проблема - это очень медленно. Вот что я делаю:

char * buff = ...
wxString data(buff, wxConvUTF8);
text->ChangeValue(data);

Однако это не узкое место. Это происходит, как только функция, в которой находится этот блок кода, возвращается. Все приложение зависает примерно на 30 секунд. Я попытался wxYield сразу после ChangeValue, и это приводит к тому, что первые несколько строк строки отображаются в элементе управления, но он все еще зависает после. Как я могу избежать этого?

Я должен подчеркнуть, что ChangeValue возвращается почти мгновенно. Задержка происходит после этого, вероятно, во внутренних обработчиках сообщений wxTextCtrl или что-то в этом роде.

1 Ответ

2 голосов
/ 24 января 2010

wxTextCtrl переносит только стандартный текстовый элемент управления ОС, поэтому любые ограничения, которые у него есть, будут очевидны и с wxTextCtrl. Вместо этого вы можете использовать wxStyledTextCtrl, который может загружать многомегабайтные тексты и не занимает много времени. Вы даже можете выделить части вашего журнала, стилизовав их (например, сообщения об ошибках в read), но это, вероятно, снова увеличит время загрузки.

...