/// <summary> /// 操作後情報の保存 /// </summary> /// <param name="p">キャレット位置</param> /// <param name="ope">操作(挿入・削除・キャレット移動)</param> /// <param name="str">操作文字列</param> /// <param name="ee">実行クラス</param> public void ProUndoRedo(Point p, int ope, string str, CEEditView ee) { if (m_UndoRedoData == null) { // Undo/Redo 情報がない場合は何もしない return; } // Undo/Redo 操作保存 m_UndoRedoData.m_ope = ope; // Undo/Redo 操作後のキャレット位置保存(論理位置として保存) int lRow, lCol; ee.m_doc.PtoLPos(p.Y, p.X, out lRow, out lCol); // 物理位置→論理位置 m_UndoRedoData.m_aftCaret.X = lCol; m_UndoRedoData.m_aftCaret.Y = lRow; // Undo/Redo 操作データ保存 m_UndoRedoData.m_pcmemData = str; // Undo/Redo 保存 this.Append(m_UndoRedoData); // Undo/Redo 情報削除 m_UndoRedoData = null; }
/// <summary> /// 操作前情報の保存 /// </summary> /// <param name="p">キャレット位置(物理)</param> /// <param name="ee">実行クラス</param> public void PreUndoRedo(Point p, int selectType, CEEditView ee) { // Undo/Redo 不要な操作情報削除 this.DelOpe(); // Undo/Redo 操作情報格納エリア確保 if (m_UndoRedoData == null) { m_UndoRedoData = new CEUndoRedoData(); } // Undo/Redo 操作前のキャレット位置保存(論理位置として保存) int lRow, lCol; ee.m_doc.PtoLPos(p.Y, p.X, out lRow, out lCol); // 物理位置→論理位置 m_UndoRedoData.m_preCaret.X = lCol; m_UndoRedoData.m_preCaret.Y = lRow; m_UndoRedoData.m_selectType = selectType; }
/// <summary> /// Undo/Redo情報保存 /// </summary> /// <param name="urd"></param> private void Append(CEUndoRedoData urd) { m_ppCOpeArr.Add(urd); m_opeIdx++; return; }