Я использую wxWidgets и Visual C++ для создания функциональности, аналогичной использованию Unix «tail -f» с богатым форматированием (цветами, шрифтами, изображениями) в графическом интерфейсе. Я нацелен как на wxMSW, так и на wxMAC.Как добавить большое количество богатого контента (изображений, форматирования) к управлению без использования тонны процессора?
Очевидным ответом является использование wxTextCtrl с помощью wxTE_RICH, используя вызовы wxTextCtrl :: SetDefaultStyle() и wxTextCtrl :: WriteText().
Однако на моей рабочей станции 3ghz, скомпилированной в режиме выпуска, я не могу сохранить хвост журнала, который растет в среднем 1 мс на строку, в конце концов отстает. Для каждой строки, я подвергаясь:
- два вызова SetDefaultStyle()
- Два вызова два WRITETEXT()
- Вызов Freeze() и оттепели() виджета
При этом мой процессор переходит на 100% на одно ядро, используя wxMSW после заполнения примерно 20 000 строк. Программа заметно медленнее, как только она достигает определенного порога, падая еще дальше.
Я открыт для использования других элементов управления (wxListCtrl, wxRichTextCtrl и т. Д.).