关于 wxTextCtrl 最大长度回调

On wxTextCtrl max length callback

我一直在使用 wxTextCtrl 并发现了一件有趣的事情。当我将最大长度设置为较小的数字(250、500、10000)时,效果很好。但是当我输入更大的数字(20000、100000)时,它不起作用(我可以超过限制并且没有回调)。不知道如何解决它。请帮忙

wxWidgets 3.0.2

Windows

wxTextCtrl wxTE_BESTWRAP | wxTE_MULTILINE | wxBORDER_NONE | wxTE_AUTO_SCROLL | wxTE_AUTO_URL

理想情况下,当然,SetMaxLength() 应该适用于任何长度,但它确实适用于小长度和单行文本输入控件,例如将国家代码限制为 2 或 3 个字母。在可移植代码中,您根本不能将它与 wxTE_MULTILINE 控件一起使用,如文档中所述,因为这不适用于 GTK+。

所以我的建议是停止将它用于它不是为它设计的目的,尽管从原则上讲,这可能是 wxMSW 中的一个可以修复的错误——但出于解释的原因,它是一个相当低优先级的错误。

在文件 textctrl.cpp 中找到,方法

bool wxTextCtrl::HasSpaceLimit(unsigned int *len) const

造就一切的线

return *len < 10001;