我有一个相当大的应用程序,我想用 Visual-C++ 制作,现在我想添加撤消/重做功能。
有相当多的事件(按钮点击、标签文本更改等),我想找到一种方法来撤消/重做而不向每个函数添加代码。 例如,我想要一个可以读取每个完成的事件并自动存储它的类。然后在我的撤消/重做事件中,我可以只存储最新的操作。
如果那不可能,我不介意其他方式。
有什么帮助吗?
最佳答案
声明一个表示两个操作的类 - 撤消和重做。 同时创建该类的两个 vector 。
对于您要应用撤消/重做的每个操作,将该类的一个实例压入撤消 vector 。派生类的数量应该与要撤消的操作数量一样多。
例如,如果单击按钮将背景绘制为绿色,您将创建一个类实例,其撤消方法将背景绘制为之前的颜色,其重做方法将背景绘制为绿色,并将其填充到撤消 vector 中。 当你撤消时 - 你弹出最后一个类实例并调用它的撤消方法,这会将背景绘制为以前的颜色。然后将其推送到重做 vector 。
当你重做时,你弹出顶部类实例的重做 vector 并调用它的重做方法,它们将它填充回撤消 vector 。
有一些极端情况(边界),您会在遇到时解决它们.. :-)
关于c++ - Visual C++ 撤消和重做操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367544/