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