我正在编写一个Windows程序(没有mfc),需要每隔几秒左右向操作员输出一个状态行。我尝试使用富文本框,但经过这么多小时后似乎挂断了。有人建议我可以使用什么吗?
人们提到我的缓冲区可能已经用尽了。我以为我已经计划好了。在显示大约1000行之后,我将使用前500个行并使用富文本框中的选择和剪切选项将其删除。我仍遇到同样的问题。
答案 0 :(得分:2)
This question似乎相关,this one也是如此。但他们没有为富文本框的替代方案提供任何具体建议。
您可以尝试 Scintilla控件(scintilla.org),它似乎对文字大小没有任何硬性限制。它有许可证。它被许多文本编辑器使用,例如Notepad ++,Notepad2,Code :: Blocks,FlashDevelop。我没有亲自尝试过,但从文档中可以很容易地在Windows API应用程序中使用它。当然,为了你的目的,这可能是过度的。
答案 1 :(得分:0)
如果您每隔几秒钟继续在控件中附加文本数小时,那么您可能会在控件或进程上遇到一些内存限制。我认为,鉴于更新频率以及运行程序的时间长短,您会选择任何控件。
您是否考虑过为文本框的内容实现简单的循环缓冲区?说只保留最后一小时的消息。如果操作员需要及时返回数小时,您可以为历史记录维护单独的日志文件。
答案 2 :(得分:0)
我最终编写了自己的控件来执行此操作,基本上复制了Visual Studio中的“输出”窗口。它取得了成功,但最终得到的代码比我开始时的代码要多得多 - 我坚持使用光标在最后一行时自动滚动,选择/复制,粗体文本等功能。它由std::deque
支持,因此我可以限制为窗口存储的行数。
不幸的是,该代码属于前雇主,所以我不能在这里分享。