到这里:
http://www.planet-source-code.com/vb/
用Undo/Redo做关键字来查找,可以找到十几个记录

解决方案 »

  1.   

    用SendMessage发送一个 WM_UNDO消息,再发送一次为 REDO
      

  2.   

    如果只实现一次undo,很多控件自己就自带了,text,richtextbox等。要多次,可以把各种可能的文本编辑操作定义成自己的描述字符串,如删除“abcde”中的“bc”,只要记住从第二个字符的位置删除了“bc”,不妨记为“DEL('bc') POSITION(2)”。诸如此类,把所有描述字符串存入堆栈就行了。关键是自己建立一套严禁的“操作”-〉“描述字符串”及“操作字符串”-〉“反操作”的定义。
      

  3.   

    用API的确是一个好方法,但是API只能实现一次的UNDO,我至少要10次,我曾自己编写过一个,(改变一次记录一次)但是不理想,所以想请各位帮忙!有什么好的算法!谢谢!
      

  4.   

    我用API实现----->>>>>>在窗体中加入一个按钮和一个文本框Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
     (ByVal hwnd As Long, _
      ByVal wMsg As Long, _
      ByVal wParam As Long, _
      lParam As Any) As Long'函数中虽然有四个参数,但关键的是前两个:hwnd 和wMsg.
    'Hwnd是句柄.
    'wMsg是一个十六进制数,代表了函数要发送的具体消息.Const WM_UNDO = &H304
    Dim ret As Long
      
    Private Sub Command1_Click()
     ret = SendMessage(Text1.hwnd, WM_UNDO, 0, 0)
    End Sub