• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リッチテキストへの行ごとの背景色指定について)

リッチテキストへの行ごとの背景色指定について

このQ&Aのポイント
  • リッチテキストへの行ごとの背景色指定についての問題に対する代替案や解決案を求めています。
  • 現在、リッチテキストで表示された2つの文章を比較し、間違いが発見された場合に行ごとに背景色を変更したいと考えています。
  • しかし、行単位での背景色の指定方法について問題があり、ずれや重なりが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

GetLineIndexでその行頭のインデックスと次行インデックスを取得して SetSelを掛け、GetSelTextで取得して比較 または richEdit1などのテキスト内容をTokenizeで切り出して比較 GetLineIndexでその行頭、次行のインデックスを取得してSetSel といった具合のほうがいいようです リッチエディットコントロールが内部で保持しているの文字はUnicodeではないかと思います App側がANSIだとこの辺りで文字インデックスの差が出てきてしまうような気がします # AppをUnicodeにしても変な動作がありましたが … 以下にサンプルを掲示します 文字列の区切りが "\r\n" だとして // コントロール変数の更新 UpdateData( TRUE ); int nPos[2] = {0}; CString sLine[2]; int nS, nE; nS = nE = 0; for( int n = 0; n < LineCount; n++ ) {   // LFの位置を見つける   sLine[0] = m_ritchEdit.Tokenize( _T("\n"), nPos[0] );   sLine[1] = m_ritchEdit2.Tokenize( _T("\n"), nPos[1] );   // 切り出した文字列の比較   if ( sLIne[0] != sLIne[1] ) {     // 行頭を取得     nS = m_ritchEditCtrl.LineIndex( n );     // 行末を取得     nE = m_ritchEditCtrl.LineIndex( n + 1 ) - 1;     m_ritchEditCtrl.SetSel( nS, nE );     m_ritchEditCtrl.SetSelectionCharFormat( cf[0] );     nS = m_ritchEditCtrl2.LineIndex( n );     nE = m_ritchEditCtrl2.LineIndex( n + 1 ) - 1;     m_ritchEditCtrl2.SetSel( nS, nE );     m_ritchEditCtrl2.SetSelectionCharFormat( cf[0] );   } } といった具合でうまくいくと思います …

yukke33
質問者

お礼

ご助力ありがとうございました。 おかげさまで、バッチリできました。 こういう方法があることも初めて知って、とても勉強になりました。

関連するQ&A