2

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

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

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

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

4

1 回答 1

2

wxTextCtrl仅包装操作系统的标准文本控件,因此任何限制也将显而易见wxTextCtrl。您可以做的是使用wxStyledTextCtrl相反,它能够加载数兆字节的文本并且不需要很长时间。您甚至可以通过设置样式来突出显示日志的某些部分(例如读取中的错误消息),但这可能会再次增加加载时间。

于 2010-01-24T10:10:06.873 回答