いつも報告・検証ありがとうございます。
現象、確認できました。いままでまったく気が付きませんでした。
トレースすると、(4)の"を削除するときに
CLayoutMgr::DoLayout_Range()の引数がnLineNum = 0となります。
このとき、何もしないために、m_nLineTypeBotが更新されずに不正になるようです。
▼CLayoutMgr::DoLayout_Rangeの先頭付近
if( 0 == nLineNum ){
return 0;
}
を削除してください。
>CLayoutMgr::DoLayout_Range()メソッドの最後のほうに
> // EOFだけの行の直前の行の色分けが・・・
> if( nCurLine == m_pcDocLineMgr->GetLineCount() ){
> m_nLineTypeBot = nCOMMENTMODE_Prev;
> }
>という処理がありますが、これが原因らしいです。
>ここをコメントアウトしても問題ないでしょうか?
この部分をコメントアウトすると、m_nLineTypeBotが「"モード」に更新されなくなって
たとえば、以下のように1文字つづ入力すると
xxx"aaaa
bb[EOF]
のbbの色が、通常テキストになってしまいますので、消さないでください。
本来なら、0 == nLineNumのときも、この処理が行われて正常に色が変わる仕組みでした。