## Redo

### Description

Optional. Fired when a custom command is being redone. The return value is ignored.

Note | This callback is only supported in the C++ API (no support for scripting).

### Applies To

Custom Commands implemented with the C++ API.

### Syntax

    CStatus <command_name>_Redo( CRef& in_context )

    {

    	...

    }

<command_name> is the name specified in the call to PluginRegistrar.RegisterCommand, with any spaces converted to underscores.

### Parameters

Parameter | Language | Type | Description
--- | --- | --- | ---
| C++ | CRef& | A reference to the Context object. Context::GetSource returns the Command.

### Context Attributes

Attribute | Description
--- | ---
UndoRedoData | Allows you to retrieve the action to redo from the stack. See Undoing and Redoing Custom Commands.

### Examples

    // Taken from the SimpleUndoRedoCommand example (for the complete example,

    // click the link in the See Also section below)

    SICALLBACK SimpleUndoRedoCommand_Redo( CRef& in_ctxt )

    {

    	Context ctxt( in_ctxt );

    	CMoveViewTask* p = (CMoveViewTask*)(CValue::siPtrType)ctxt.GetAttribute(L"UndoRedoData");

    	p->Redo( );

    	return CStatus::OK;

    }

### See Also

- Command Callbacks
- Execute (Command)
- Init (Command)
- Undo
- TermUndoRedo
- Custom Command Examples