2011-06-14 60 views
0

我正在写一个Windows程序(无mfc),并且需要每隔几秒左右向操作员输出一个状态行。我尝试使用富文本框,但经过这么多小时后,它似乎挂断了。有没有人有我可以使用的建议呢?需要窗口对话框资源类型的帮助

人们提到我的缓冲区可能已经耗尽。我以为我曾为此计划过。在我显示大约1000行后,我将采用前500个,并使用富文本框中的选择和剪切选项将其删除。我仍遇到同样的问题。

+0

也许在几个小时后,富文本框已满? – 2011-06-14 15:20:35

回答

0

如果您每隔几秒钟持续追加到控件中的文本,那么您可能会遇到控件或进程中的某些内存限制。我想你会遇到这个问题,因为你选择了更新频率和运行程序的时间。

您是否考虑过为文本框的内容实现一个简单的循环缓冲区?说只保留最后一小时的消息。如果操作员需要在数小时后返回,则可以为历史记录维护一个单独的日志文件。

2

This question显示相关,this one也。但他们没有给出任何具体的建议来替代富文本框。

你可以试试Scintilla控件(scintilla.org),它对文本大小没有任何硬性限制。它有一个许可证。它被许多文本编辑器使用,如Notepad ++,Notepad2,Code :: Blocks,FlashDevelop。我没有亲自尝试过,但从文档中可以很容易地在Windows API应用程序中使用它。当然,这可能是为了你的目的矫枉过正。

0

我最终编写了自己的控件来做到这一点,本质上复制了Visual Studio中的“输出”窗口。这是一个成功的例子,但最终的代码比我想象的要多得多 - 我坚持使用自动滚动功能,例如当光标位于最后一行时,选择/复制,粗体文本等。它由std::deque支持,所以我可以限制为该窗口存储的行数。

不幸的是,代码属于前雇主,所以我不能在这里分享。