• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > Undo/Redo功能该如何实现?找了很多办法,没有一个比较好的方案,希望能得到大家的指点。

Undo/Redo功能该如何实现?找了很多办法,没有一个比较好的方案,希望能得到大家的指点。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 Undo/Redo功能该如何实现?找了很多办法,没有一个比较好的方案,希望能得到大家的指点。等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: Undo/Redo功能该如何实现?找了很多办法,没有一个比较好的方案,希望能得到大家的指点。
描述:

想在一个矢量绘图控件添加上Undo/Redo功能,不知道有何好的方法?
希望大家给点想法,有成熟的代码更好,贴出来!
1、记录内存的变动情况,在每点存储当前内存的状态,codeproject上有篇讲的,但个人认为还是存在很多缺点
2、用mfc的doc来记录每个点,感觉也不行。
3、把每个对图元的操作封成对应的操作类(该类提供该操作的undo/redo功能),想法很好,但是这种操作太多,头大!
...
有什么好的想法share出来!哈哈,来者有分


解决方案1:

可以保存关键点信息?
    这样保存的资源消耗或许会比较小,通过限制长度的两条链表保存每一次的改动,一条为UNDO,一条REDO,链表到长度限制时冲掉最旧的记录?
    重绘可以根据比较当前和要操作的关键点对比(这样可能只需要保存修改部分关键点信息?)决定或者根据保存的关键点完全重绘.

解决方案2:

不懂矢量绘图。但是关于Undo/Redo,请参照Command设计模式,希望有所帮助。
这里有C#代码示例:http://www.dofactory.com/Patterns/PatternCommand.aspx

解决方案3:

mark

解决方案4:

我们现在也是提供一个cUNDO基类,提供纯虚函数Undoaction,然后为每个操作派生cUNDO类,重载Undoaction函数.

解决方案5:

网上有个imagestone和phoxo core library的库,核心的东西一样,实现了undo/redo,你下了代码看看

解决方案6:

mark

解决方案7:

http://www.codeproject.com/atl/undomgr.asp

解决方案8:

记录内存的变动情况?Y?

解决方案9:

我建议对操作进行记录,但是这要求封装统一,好处就是可以无限步Undo,前提是保存前不从物理设备删除数据,我研究arcgis的就是这样做


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Undo/Redo功能该如何实现?找了很多办法,没有一个比较好的方案,希望能得到大家的指点。

相关文章

  • 2017-06-04 求COM、ActiveX的经典站点,有源码最好
  • 2017-06-04 求助:关于在VC里操作word的问题
  • 2017-06-04 ocx嵌入html后,怎样实现不需下载安装就能在客户端使用
  • 2017-06-04 MFC写的ACTIVEX能用在VBSCRIPT中吗?
  • 2017-06-04 关于MFCActivex控件的句柄问题
  • 2017-06-05 各位大虾帮帮忙!!!!
  • 2017-06-04 如何在网页控件中通过DOM执行网页中的js脚本函数
  • 2017-06-05 VC2005调用MSComm控件出现的问题
  • 2017-06-05 类导出DLL时的C4273警告
  • 2017-06-04 那位COM高手,帮看看。用IDispatch接口操作Excel。先谢了

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 最近在看ATLInternals,后半部分开始迷糊了,问各位哪里有学ATL的书资料,我以前看过InsideCom,和一些Com编成的书,
    • 请问如果ocx控件需用到一dll,如何写inf文件、打包?
    • 如何把用户名密码信息在点击提交的时候同时保存到本地硬盘的某个文件里,在下次加载此页面的时候自动填充用户名密码
    • 线程同步的问题,急阿!
    • mfc中如何使用webbrowser控件
    • 白色背景上分布着一些大小不一的小黑点,怎么把它们处理掉
    • 大家好,我建立了一个ATL的项目,怎样让其他客户端通过远程可以使用呢?
    • ShellExecute打开当前活动目录下文件
    • 进程创建方式问题,请高手帮忙
    • 请教高手,知道IEBrowser的对象,能否操纵这个对象让他挂上BHO?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有