/** * @brief 一行だけ削除する処理です。 * @param pLine 削除する行 */ void CFootyDoc::DeleteLine(LinePt pLine) { if ( IsReadOnly() ) return; for (int i=0;i<4;i++) { if (m_cFirstVisibleLine[i].GetLineNum() == pLine->GetRealLineNum()){ m_cFirstVisibleLine[i].MoveRealBack(1); } } m_lsLines.erase(pLine); }
/** * @brief 指定された間の行を一気に削除する処理 * @param pStart 開始行(これも削除される) * @param pEnd 終了行(これは削除されない) */ void CFootyDoc::DeleteLine(LinePt pStart,LinePt pEnd) { if ( IsReadOnly() ) return; // 削除するデータの行番号を取得する size_t nRealStart = pStart->GetRealLineNum(); LinePt pDelEnd = pEnd; pDelEnd--; size_t nRealEnd = pDelEnd->GetRealLineNum(); // 最初に表示されている行と被っていたら調整してやる for (int i=0;i<4;i++) { if (nRealStart <= m_cFirstVisibleLine[i].GetLineNum() && m_cFirstVisibleLine[i].GetLineNum() <= nRealEnd) { m_cFirstVisibleLine[i].SetPosition(pStart); m_cFirstVisibleLine[i].MoveRealBack(1); } } // 実際に削除する処理 m_lsLines.erase(pStart,pEnd); }