3

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

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

请让我知道是否有人已经为 CRichEditCtrl 做过这个?(它必须处理富编辑控件中存在的任何字体/大小的文本。)

谢谢,萨钦

4

2 回答 2

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);

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

于 2011-12-03T09:02:06.883 回答
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);
于 2011-02-06T08:19:50.723 回答