【发布时间】:2011-01-08 17:40:10
【问题描述】:
我有一个 wxTextCtrl,我需要在其中放入一个非常大的字符串。 (就像一个 15 MB 的字符串)唯一的问题是它很慢。这是我正在做的事情:
char * buff = ...
wxString data(buff, wxConvUTF8);
text->ChangeValue(data);
但是,这不是瓶颈。只要此代码块所在的函数返回,就会发生这种情况。整个应用程序冻结约 30 秒。我在 ChangeValue 之后尝试了 wxYield,这导致字符串的前几行显示在控件中,但之后它仍然冻结。我怎样才能避免这种情况?
我必须强调,ChangeValue 几乎是立即返回的。延迟发生在这之后,可能在 wxTextCtrl 的内部消息处理程序或其他东西中。
【问题讨论】:
-
听起来设计 wxTextCtrl 的人并没有预料到有人会在其中塞入一个 15 mb 的字符串(大约是整本编程书的大小)。
-
可以实现分页机制,一次只加载总文本的一个小窗口。这种方法应该几乎是即时的。不过,我没有足够的 wxWidgets 专业知识来告诉你如何做到这一点。
标签: wxwidgets large-files wxtextctrl