2011-02-04 8 views
3

MFCアプリケーションでスペルチェッカーを実装しようとしています。私がしたいことは、間違って綴られた単語の下に赤い線を表示することです。MFCのCRichEditCtrlに赤いスペックラインを表示する方法

私はそれが行われた1つの例を見つけましたが、簡単な編集ボックスでのみ動作します。これは、単純に編集コントロールのデフォルトフォントを使用して、しかし、リッチエディットコントロールのような豊富なエディットコントロールでは機能しません。さまざまな言葉が異なるフォントを持つ可能性があります。この場合、私が見つけた例は、間違った場所に線を描きます。

誰かがすでにCRichEditCtrlについてこれを行っている場合は教えてください。 (これは、リッチエディットコントロールに存在する任意のフォント/サイズのテキストを処理する必要があります。)

おかげで、 サチン

答えて

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

私はこのことを願っていますがあなたのテキストの下線を取得します