Share via


Método IOleUndoManager::UndoTo (ocidl.h)

Instrui o gerenciador de desfazer a invocar ações de desfazer novamente por meio da pilha de desfazer, até e incluindo a unidade de desfazer especificada.

Sintaxe

HRESULT UndoTo(
  [in] IOleUndoUnit *pUU
);

Parâmetros

[in] pUU

Ponteiro para a unidade de nível superior a ser desfeito. Se esse parâmetro for NULL, a unidade de nível superior adicionada mais recentemente será usada.

Retornar valor

Esse método retorna S_OK com êxito. Outros valores retornados possíveis incluem o seguinte.

Código de retorno Descrição
E_INVALIDARG
A unidade de desfazer especificada não está na pilha de desfazer.
E_ABORT
Falha na tentativa de desfazer e na tentativa de reversão. O gerenciador de desfazer nunca deve propagar o E_ABORT obtido de uma unidade de desfazer contida. Em vez disso, ele deve mapear todos os valores de E_ABORT retornados de outras unidades de desfazer para E_FAIL. O gerenciador de desfazer deve mapear qualquer valor E_ABORT retornado de outras unidades de desfazer para E_FAIL porque o chamador de IOleUndoManager::UndoTo sabe que a tentativa de desfazer e a tentativa de reversão falharam e esse é o único motivo para o valor retornado de E_ABORT.
E_UNEXPECTED
O gerenciador de desfazer está desabilitado.

Comentários

Esse método chama o método IOleUndoUnit::D o em cada unidade de desfazer de nível superior. Em seguida, ele libera essa unidade de desfazer.

Observe que a unidade de desfazer especificada deve ser uma unidade de nível superior, normalmente recuperada por meio de IOleUndoManager::EnumUndoable.

Caso um erro seja retornado da unidade de desfazer, o gerenciador de desfazer precisará tentar reverter o estado do documento para se recuperar do erro executando ações na pilha de refazer.

Independentemente do sucesso da reversão, o gerenciador de desfazer sempre deve limpar as duas pilhas antes de retornar o erro.

Se o gerenciador de desfazer tiver chamado o método Do em mais de uma unidade de nível superior, ele só deverá reverter a unidade que retornou o erro. As unidades de nível superior que tiveram êxito não devem ser revertidas.

O gerenciador de desfazer também deve acompanhar se as unidades foram adicionadas à pilha oposta para que não tente reverter se nada tiver sido adicionado. Consulte a interface IOleUndoManager para obter uma descrição detalhada do tratamento de erros.

Anotações para chamadores

É possível que uma unidade de desfazer retorne E_ABORT como uma falha, mas isso não tem nenhum significado específico em IOleUndoUnit. Como o gerenciador de desfazer normalmente retornará o código de erro dado pela unidade de desfazer com falha e E_ABORT tem um significado específico em IOleUndoManager::UndoTo, o gerenciador de desfazer nunca deve passar E_ABORT porque o chamador interpretará isso como falha na reversão quando, na verdade, ele pode ter êxito.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ocidl.h

Confira também

IOleUndoManager

IOleUndoManager::EnumUndoable

IOleUndoManager::RedoTo

IOleUndoUnit::D o