如何插入超链接而不带下划线到 Win32 RichEdit
How to insert hyperlink without underline to Win32 RichEdit?
我添加了一个指向RichEdit的链接,使用CFM_LINK/CHARFORMAT2结构。但是我不知道如何消除下划线效果。我试过了:
SendMessage(richEditHWND, EM_AUTOURLDETECT, FALSE, NULL);
SendMessage(richEditHWND, EM_SETEDITSTYLEEX, 0, SES_EX_HANDLEFRIENDLYURL);
CHARFORMAT2 cf2;
memset(&cf2, 0, sizeof(CHARFORMAT2));
cf2.dwMask = CFM_LINK| CFM_UNDERLINE | CFM_COLOR | CFM_LINKPROTECTED;
cf2.dwEffects = CFE_LINK| CFE_UNDERLINE | CFE_LINKPROTECTED;
cf2.crTextColor = RGB(255, 0, 0);
cf2.bUnderlineType = CFU_UNDERLINENONE;
SendMessage(richEditHWND, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
但它不起作用。
另一种方法是将下划线颜色设置为白色,这是RichEdit的背景颜色,但这是一种黑客方式,使字符像q,j,...被切开,在选择文本时也显示该行。
那么正确的方法是什么呢?
注意:我正在使用RICHEDIT50W
类。
可以使用友好名称超链接执行此操作。这些允许您指定用于显示的任意文本(以及其自己的颜色和格式),并且实际 URL 是隐藏的。
默认情况下,友好名称超链接文本也显示为蓝色 带有蓝色下划线,除非名称文本的格式为 露骨的颜色。显式格式优先
显示的文本需要具有CFE_LINK
和CFE_LINKPROTECTED
样式,以及显式颜色和格式样式。然后,使用 ITextRange2::SetURL
方法设置 URL。
MSDN 博客文章 RichEdit 友好名称超链接提供了有关如何使用它们的更详细说明。
我最近遇到了同样的问题,我只是发现这是 Richedit 库的错误。当我将其从 v4.1 更新到 v5.0 时,下划线可以毫无问题地删除
尝试使用 wParam=0, lParam=0 向 RichEdit 控件发送EM_AUTOURLDETECT消息
"指定 0 以禁用自动链接检测...": https://msdn.microsoft.com/en-us/library/windows/desktop/bb787991(v=vs.85).aspx
相关文章:
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 下划线不会与"发送输入"一起显示C++
- 在 QTextEdit C++ 中为特定行添加下划线
- 导出函数中有多少下划线('_')(C++
- 有没有选项不自动所有前导下划线 _ 以导出 emscripten 中的函数?
- 删除数字并在C++中保留字符串的下划线
- c++ 函数中额外的下划线名称
- 在C 中,Haskell下划线有其他选择吗?
- 使用与号后跟下划线命名的变量是什么意思?
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- 用下划线填充空格
- 在Typedef结构中,下划线意味着什么
- 为什么非下划线名称保留给 UDL 的实现,而不是相反
- 下划线、名称和文字运算符
- 检查两个彼此相邻的两个下划线
- 使用查找检查,如果我的字符串中有下划线
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- 用户定义的文字、下划线和全局名称
- 如何在MFC C++中给文本加下划线
- 如何插入超链接而不带下划线到 Win32 RichEdit