c++ - 为了使用 winapi 显示推文,我可以选择什么最佳控件?

标签 c++ winapi richedit

控件需要能够在多行上绘制文本,响应对 URL 或@user 标签的点击等,这些都需要不同的颜色才能突出显示。

第一个明显的选择是 richedit 控件,但我遇到了很多问题。首先,我希望文本不可选择并且输入被禁用。后者很简单,但我发现禁止选择文本的唯一方法是禁用控件。在那种情况下,我无法弄清楚如何将背景颜色从默认的灰色更改为白色。此外,当控件被禁用时,我从 richedit 免费获得的所有可点击链接功能都将停止工作。

你认为我的选择是什么?我对尝试使用 TextOut 来制作自己的控件非常谨慎。这可能让我想哭。

编辑: 直到现在我都没有考虑让用户选择文本作为选项,所以只读模式似乎没有用。我只是这样在脑海中计划好的。我绝对不希望那里有一个闪烁的插入符号,所以我四处寻找,发现我可以在 richedit 的 WM_SETFOCUS 上调用 HideCaret(通过子类化它)并返回 0。这样就永远摆脱了插入符号。具有讽刺意味的是,这也摆脱了用鼠标选择任何东西的能力,这几乎正是我最初希望的行为。我不知道我是否完全反对不允许选择。我会回到那个。现在剩下的就是弄清楚我是否可以覆盖鼠标悬停在文本上时光标图像发生变化的行为。

最佳答案

您可以使用 Webbrowser control并构建显示您想要的内容的 HTML。

关于c++ - 为了使用 winapi 显示推文,我可以选择什么最佳控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182289/

相关文章:

c++ - 中毒的空引用和短路表达式评估错误或 UB?

c++ - 是否有任何跨平台库可以通过 C++ 使用 shell(Windows 中的 cmd)?

c++ - 用于将后缀附加到 unsigned long long 文字的宏

c++ - 如何连续选择两个RichEdit控件中的内容?

c++ - 提升进程间 unordered_map 字符串

c++ - 如何使用winapi实现类Steam窗口?

windows - 无论如何,我无法让这个进度条从线程更新

c - 用于在计算机之间发送消息的 Win32 API

windows - 在 x64 中第二次 RichEdit 初始化后崩溃