为什么wxTextCtrl在显示文本时这么慢?

时间:2010-01-24 07:13:31

标签: wxwidgets large-files wxtextctrl

我有一个wxTextCtrl,我需要在其中放入一个非常大的字符串。 (就像一个15 MB的字符串)唯一的问题是它非常慢。这就是我正在做的事情:

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

但是,这不是瓶颈。一旦该代码块返回函数,就会发生这种情况。整个应用程序冻结约30秒。我在ChangeValue之后尝试了wxYield,这导致字符串的前几行显示在控件中,但之后仍然会冻结。我怎么能避免这个?

我必须强调ChangeValue几乎立即返回。延迟发生在此之后,可能是在wxTextCtrl的内部消息处理程序或其他东西。

1 个答案:

答案 0 :(得分:2)

wxTextCtrl仅包含操作系统的标准文本控件,因此对wxTextCtrl也有明显的限制。您可以做的是使用wxStyledTextCtrl代替,它可以加载多兆字节的文本并且不需要很长时间。您甚至可以通过设置样式来突出显示部分日志(例如读取中的错误消息),但这可能会再次增加加载时间。