Ich verwende wxWidgets und Visual C++, um eine Funktionalität zu schaffen, die der Verwendung von Unix "tail -f" mit reichhaltiger Formatierung (Farben, Schriftarten, Bilder) in einer GUI ähnelt. Ich ziele sowohl auf wxMSW als auch auf wxMAC ab.
Die offensichtliche Antwort ist die Verwendung von wxTextCtrl mit wxTE_RICH, mit Aufrufen von wxTextCtrl::SetDefaultStyle() und wxTextCtrl::WriteText().
Auf meiner 3-GHz-Workstation, die im Freigabemodus kompiliert wurde, bin ich jedoch nicht in der Lage, ein Protokoll zu verfolgen, das im Durchschnitt um 1 ms pro Zeile wächst und schließlich zurückfällt. Für jede Zeile, ich bin anfallenden:
- Zwei Aufrufe von SetDefaultStyle()
- Zwei Aufrufe zwei WriteText()
- Ein Aufruf zum Einfrieren() und Auftauen() des Widgets
Wenn ich dies ausführe, geht meine CPU auf einem Kern mit wxMSW auf 100 %, nachdem etwa 20.000 Zeilen gefüllt wurden. Das Programm ist sichtbar langsamer, sobald es einen bestimmten Schwellenwert erreicht und fällt weiter zurück.
Ich bin offen für die Verwendung anderer Steuerelemente (wxListCtrl, wxRichTextCtrl, usw.).