日期:2014-05-17  浏览次数:20817 次

新手求教如何写撤销与重做的代码
就是跟vs  ctrl+z +y一样功能的代码

------解决方案--------------------
如果是文本框,发送WM_UNDO和WM_REDO就可以了。

更复杂的功能,你需要的无非是3个要素,一个是当操作改变的时候能捕获到,一个是可以把操作变化(或者原来的状态)放入一个堆栈。最后是所谓撤销就是恢复到栈顶的那个状态。如果你要重做,还需要另一个堆栈,重做就是撤销的撤销。
------解决方案--------------------
你是否全面使用了 ICommand 接口了呢?也就是说,你程序中的所有需要标识的操作,都是 ICommand,而不再是随意写的方法。

先做到这一步,也就是随时可以Redo,那么才会有Undo的概念。