我添加了一个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背景颜色,但它是一种hacky方式,使q,j,...等字符被分开,在选择文本时也显示该行。
那么这样做的正确方法是什么?
注意:我正在使用RICHEDIT50W
类。
答案 0 :(得分:2)
您可以使用友好名称超链接来执行此操作。这些允许您指定用于显示的任意文本(以及它自己的颜色和格式),并隐藏实际的URL。
默认情况下,友好名称超链接文本也以蓝色显示 除非使用。格式化名称文本,否则使用蓝色下划线 明确的颜色。显式格式优先
显示的文字需要具有CFE_LINK
和CFE_LINKPROTECTED
样式,以及明确的颜色和格式样式。然后使用ITextRange2::SetURL
方法设置URL。
MSDN博客文章RichEdit Friendly Name Hyperlinks详细介绍了如何使用它们。
答案 1 :(得分:0)
我最近遇到了同样的问题,我发现它是Richedit库的一个错误。当我从v4.1更新到v5.0时,可以删除下划线而没有任何问题
答案 2 :(得分:-2)
尝试使用wParam = 0,lParam = 0发送EM_AUTOURLDETECT消息到RichEdit控件
"指定0以禁用自动链接检测...":https://msdn.microsoft.com/en-us/library/windows/desktop/bb787991(v=vs.85).aspx