3

MFC アプリケーションにスペルチェッカーを実装する作業を行っています。私がやりたいのは、スペルが間違っている単語の下に赤い線を表示することです。

それが行われた例を1つ見つけましたが、編集コントロールのデフォルトフォントを使用して計算を行い、波線を描くことができるため、単純な編集ボックスでのみ機能します。ただし、リッチ エディット コントロールでは異なる単語が異なるフォントを持つ可能性があるため、リッチ エディット コントロールでは機能しません。この場合、私が見つけた例では、間違った場所に線が描かれています。

誰かが 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 に答える