Compartir a través de


_EdUndoOn( ) API Library Routine

Enables you to group a series of actions as a single action for use with _EdUndo( ) and _EdRedo( ).

void _EdUndoOn(WHANDLE wh, int Grouped)
WHANDLE wh;            /* Window handle. */
int Grouped;                  /* Toggle grouping off. */

Remarks

Actions that occur after you pass the Grouped parameter as FALSE with _EdUndoOn( ), or after you issue _EdUndo( ), are no longer grouped as a single action.

For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.

Example

The following example shows how to use _EdUndoOn( ) to group edit operations that you can undo as a group using _EdUndo( ).

Visual FoxPro Code

SET LIBRARY TO EDUNDOON
= EDUNDOON("x")  && edit file "x"

C Code

#include <pro_ext.h>
#define TRUE   1
#define FALSE   0

FAR Example(ParamBlk FAR *parm)
{
   char FAR *pFileName;
   WHANDLE wh;

   if (!_SetHandSize(parm->p[0].val.ev_handle, 
      parm->p[0].val.ev_length+1)) 
   {
      _Error(182); // "Insufficient memory"
   }
   _HLock(parm->p[0].val.ev_handle);
   pFileName = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
   pFileName[parm->p[0].val.ev_length] = '\0';
   wh = _EdOpenFile(pFileName, FO_READWRITE);
   _HUnLock(parm->p[0].val.ev_handle);

   _EdUndoOn(wh, TRUE); // start undo group

   _EdSetPos(wh, _EdGetLinePos(wh, 13));
   _EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));
   _EdSelect(wh, _EdGetLinePos(wh, 14), _EdGetLinePos(wh, 16));
   _EdIndent(wh, 1);

   _EdUndoOn(wh, FALSE); // end undo group
   _EdUndoOn(wh, TRUE); // start another undo group

   _EdSelect(wh, _EdGetLinePos(wh, 9), _EdGetLinePos(wh, 12));
   _EdDelete(wh);
   _EdSetPos(wh, _EdGetLinePos(wh, 13));
   _EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));

   _Execute("WAIT WINDOW 'Press any key to undo changes.'");
   _EdUndoOn(wh, TRUE); // undoes to start of undo group
}

FoxInfo myFoxInfo[] = {
   {"EDUNDOON", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

See Also

_EdRedo( ) API Library Routine | _EdUndo( ) API Library Routine | Accessing the Visual FoxPro API