Doc3 undo/redo 前のドキュメント 次のドキュメント ■ undo/redo undo/redo はとても魅力的な機能です。初めて undo/redo が動作するするシステムを触った時は、 いったいどうやって実装しているのだろうと不思議に思いました。だって、ユーザが行った操作をずっと覚えていて、 それを取り消したり再実行できるわけですから、かなり複雑な機構が必要ではないかと思いませんか? ViViにも undo/redo を実装しようと数時間考えて以下に説明する方法を採用することにしました。 自分では直感的で素直な実装と思っています。 undo/redo を実現するにはユーザが行った操作を覚える必要があります。ViViではそのためのクラス CUndoItem と、その派生クラスオブジェクトの順序付き集合を管理する CUndoMgr を導入しました。 ■ CUndoItem Vi