示例#1
0
        private void PackThis()
        {
            _undoUnits.Reset();
            Interop.IOleUndoUnit[] startunits   = new Interop.IOleUndoUnit[(uint)_startIndex];
            Interop.IOleUndoUnit[] currentunits = new Interop.IOleUndoUnit[(uint)_numUndos];
            //IntPtr j1 = IntPtr.Zero;
            Interop.IOleUndoUnit unit = null;
            int su = 0;

            for (int k = 0; k < _startIndex; k++)
            {
                _undoUnits.Next(1, out unit, out su);
                startunits[k] = unit;
            }
            for (int i = 0; i < _numUndos; i++)
            {
                _undoUnits.Next(1, out unit, out su);
                currentunits[i] = unit;
            }
            ((Interop.IOleUndoManager)_undoManager).DiscardFrom(null);
            for (int j = 0; j < _startIndex; j++)
            {
                if (startunits[j] == null)
                {
                    continue;
                }
                ((Interop.IOleUndoManager)_undoManager).Add(startunits[j]);
            }
            if (unit != null)
            {
                UndoUnit uu = new UndoUnit(unit, ((Interop.IOleUndoManager)_undoManager));
                ((Interop.IOleUndoManager)_undoManager).Add(uu);
            }
        }
示例#2
0
        private void Pack(Interop.IEnumOleUndoUnits enumerator)
        {
            enumerator.Reset();
            Interop.IOleUndoUnit[] units = new Interop.IOleUndoUnit[(uint)_startIndex];
            _undoUnits = new Interop.IOleUndoUnit[(uint)_numUndos];
            //IntPtr j1 = IntPtr.Zero;
            Interop.IOleUndoUnit unit;
            int i1 = 0;

            for (int k = 0; k < _startIndex; k++)
            {
                enumerator.Next(1, out unit, out i1);
                units[k] = unit; // (Interop.IOleUndoUnit)Marshal.GetObjectForIUnknown(unit);
                //Marshal.Release(unit);
            }
            for (int i2 = 0; i2 < _numUndos; i2++)
            {
                enumerator.Next(1, out unit, out i1);
                _undoUnits[i2] = unit; // (Interop.IOleUndoUnit)Marshal.GetObjectForIUnknown(unit);
                //Marshal.Release(unit);
            }
            undoManager.DiscardFrom(null);
            for (int j2 = 0; j2 < _startIndex; j2++)
            {
                if (units[j2] == null)
                {
                    continue;
                }
                undoManager.Add(units[j2]);
            }
            undoManager.Add(this);
        }
示例#3
0
 private void Pack(Interop.IEnumOleUndoUnits enumerator)
 {
     int num;
     enumerator.Reset();
     Interop.IOleUndoUnit[] unitArray = new Interop.IOleUndoUnit[this._startIndex];
     this._undoUnits = new Interop.IOleUndoUnit[this._numUndos];
     IntPtr zero = IntPtr.Zero;
     for (int i = 0; i < this._startIndex; i++)
     {
         enumerator.Next(1, out zero, out num);
         unitArray[i] = (Interop.IOleUndoUnit) Marshal.GetObjectForIUnknown(zero);
         Marshal.Release(zero);
     }
     for (int j = 0; j < this._numUndos; j++)
     {
         enumerator.Next(1, out zero, out num);
         this._undoUnits[j] = (Interop.IOleUndoUnit) Marshal.GetObjectForIUnknown(zero);
         Marshal.Release(zero);
     }
     this._undoManager.DiscardFrom(null);
     for (int k = 0; k < this._startIndex; k++)
     {
         this._undoManager.Add(unitArray[k]);
     }
     this._undoManager.Add(this);
 }
示例#4
0
 /// <summary>
 /// Ctor for IOleUndoUnit object.
 /// </summary>
 /// <param name="unit"></param>
 /// <param name="undoManager"></param>
 public UndoUnit(Interop.IOleUndoUnit unit, Interop.IOleUndoManager undoManager)
 {
     _unit        = unit;
     _undoManager = undoManager;
 }
示例#5
0
 /// <summary>
 /// Not Implemented.
 /// </summary>
 /// <param name="undoUnit"></param>
 /// <returns></returns>
 public int FindUnit(Interop.IOleUndoUnit undoUnit)
 {
     throw new NotImplementedException();
 }