私は CRichEditCtrl を使用してコンピューター言語を編集しています。それを変更するたびに、現在のテキスト行で SetSelectionCharFormat を呼び出して (LineFromChar(-1) で報告されているように)、構文を強調表示しています。(例: コメントは緑色、セクション見出しは大きなフォント、コンパイル エラーは赤色など) この言語には、1 行に /* を入力すると次の行の一部になる C コメントなどの複数行の機能がないことに注意してください。コメントも。特定の文字の変更については、現在の行の色を変更するだけです。
それはすべてうまくいっているように見えます。
ただし、いくつかの奇妙な問題があります。1 つは、別の場所から複数行のテキストを選択して貼り付けた場合です。私の OnUpdate() が呼び出されますが、単純に、再フォーマットが必要になる可能性のある唯一の行は、LineFromChar() によって返される行であると想定しています。ユーザーが 1 文字ずつ入力している場合はこれで十分ですが、複数行の貼り付けを受け取った後、プログラムは貼り付けられたテキストの最後の行のみを再フォーマットすることを意味します。 挿入の開始位置をどのように知ることができますか?