如何在MFC中的CRichEditCtrl中显示红色Squiggly线

时间:2011-02-04 09:47:38

标签: mfc spell-checking cricheditctrl

我正在MFC应用程序中实现拼写检查程序。我想要做的是在拼写错误的单词下面显示红线。

我找到了一个完成它的例子,但它仅适用于一个简单的编辑框,因为它可以简单地使用编辑控件默认字体进行计算以绘制波浪线。但它不适用于丰富的编辑控件,因为在丰富的编辑控件中,不同的单词可能有不同的字体。在这种情况下,我发现的示例在不正确的位置绘制线条。

如果有人已经为CRichEditCtrl做了这个,请告诉我? (它必须处理富编辑控件中存在的任何字体/大小的文本。)

谢谢, 萨钦

2 个答案:

答案 0 :(得分:3)

CHARFORMAT2 format;
SecureZeroMemory(&format, sizeof(CHARFORMAT2));
format.cbSize = sizeof(CHARFORMAT2);
format.dwMask = CFM_UNDERLINE|CFM_UNDERLINETYPE;
format.dwEffects = CFE_UNDERLINE;
format.bUnderlineType = CFU_UNDERLINEWAVE | 0x50;
SendMessage(EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&format);

我希望这会在你的文字中得到下划线

答案 1 :(得分:1)

使用EM_SETCHARFORMAT消息:

CHARFORMAT2 format;
SecureZeroMemory(&format, sizeof(CHARFORMAT2));
format.cbSize = sizeof(CHARFORMAT2);
format.dwMask = CFM_UNDERLINE|CFM_UNDERLINETYPE;
format.dwEffects = CFE_UNDERLINE;
format.bUnderlineType = CFU_UNDERLINE
window->SendMessage(EM_EXSETSEL, NULL, (LPARAM)&range);
window->SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&format);