c - 如何使用 Win32 API 来像控制台一样使用 RichEdit 控件?

标签 c winapi richedit

我的简单应用程序中有一个 RichEdit 控件,我希望用它来模拟类似控制台的显示。我希望能够有一个 x 行数(例如 300)的缓冲区,并且每当添加行时,如果新行超出,我还想删除最旧的(顶部)行阈值x。我还希望它在添加时自动滚动到底部以显示最新行。

我一直在使用 SetWindowText 取得了一些成功,但是我想到可能有一种更有效的方法可以将文本附加到末尾并从开头删除文本,而不必替换所有文本每次都这样。这是真的吗?如果是,我该怎么办?

另外,添加新文本时如何使其自动滚动到窗口底部?

这是使用 C 语言的 Win32 API,我没有使用 RichEdit 的 MFC 版本(仅在 XP 和 Vista 上使用普通 Win32 API)。

最佳答案

要添加文本,请将所选内容设置为文本末尾 (EM_SETSEL),然后将所选内容替换为新文本 (EM_REPLACESEL)。

要滚动到底部,您可以向其发送带有 SB_BOTTOM 的 WM_VSCROLL。

关于c - 如何使用 Win32 API 来像控制台一样使用 RichEdit 控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2211280/

相关文章:

c++ - 如何使用 MS CryptoAPI 导出受密码保护的私钥?

winapi - Win32 : Error with CreateTextServices

c - 从 C 声明生成二进制接口(interface)规范

在文件中创建文件系统

c - 如何为 CreateProcess() 启动的进程设置语言环境

c++ - 获取 SFML 窗口的 HWND 和 HInstance?

delphi - 从 Delphi 中的 richedit 获取 Richtext

c++ - 语法高亮 richedit 控件无法正常工作

c - 为什么 yacc 或 bison 将 $1 翻译为 yyvsp[(1) - (1)].s?

c - 为什么我不能将数组名称放在等号的左侧