Метод IOleUndoManager::UndoTo (ocidl.h)
Указывает диспетчеру отмены вызывать действия отмены обратно через стек отмены вплоть до указанного блока отмены.
Синтаксис
HRESULT UndoTo(
[in] IOleUndoUnit *pUU
);
Параметры
[in] pUU
Указатель на единицу верхнего уровня для отмены. Если этот параметр имеет значение NULL, используется последняя добавленная единица верхнего уровня.
Возвращаемое значение
Этот метод возвращает значение S_OK при успешном завершении. Другие возможные возвращаемые значения включают следующее.
Код возврата | Описание |
---|---|
|
Указанная единица отмены не находится в стеке отмены. |
|
Попытка отмены и отката завершилась сбоем. Диспетчер отмены никогда не должен распространять E_ABORT, полученные из автономного блока отмены. Вместо этого он должен сопоставлять все E_ABORT значения, возвращаемые из других единиц отмены, с E_FAIL. Диспетчер отмены должен сопоставить любое значение E_ABORT, возвращенное из других единиц отмены, с E_FAIL так как вызывающий объект IOleUndoManager::UndoTo знает, что попытка отмены и отката завершилась сбоем, и это единственная причина, по которой возвращается значение E_ABORT. |
|
Диспетчер отмены отключен. |
Комментарии
Этот метод вызывает метод IOleUndoUnit::D o для каждой единицы отмены верхнего уровня. Затем он освобождает этот блок отмены.
Обратите внимание, что указанная единица отмены должна быть единицей верхнего уровня, обычно извлекаемой через IOleUndoManager::EnumUndoable.
Если из блока отмены возвращается ошибка, диспетчер отмены должен попытаться откатить состояние документа, чтобы восстановить ее, выполнив действия в стеке повтора.
Независимо от успешности отката диспетчер отмены всегда должен очищать оба стека, прежде чем возвращать ошибку.
Если диспетчер отмены вызвал метод Do в нескольких единицах верхнего уровня, он должен откатить только ту единицу, которая вернула ошибку. Не следует откатывать единицы верхнего уровня, которые были выполнены успешно.
Диспетчер отмены также должен отслеживать, были ли добавлены единицы в противоположный стек, чтобы не пытаться выполнить откат, если ничего не было добавлено. Подробное описание обработки ошибок см. в интерфейсе IOleUndoManager .
Примечания к вызывающим абонентам
Блок отмены может возвращать E_ABORT как сбой, но это не имеет конкретного значения в IOleUndoUnit. Так как диспетчер отмены обычно возвращает код ошибки, заданный блоком отмены, завершившемся сбоем, и E_ABORT имеет определенное значение в IOleUndoManager::UndoTo, диспетчер отмены никогда не должен передавать E_ABORT так как вызывающий объект интерпретирует это как откат сбоя, когда на самом деле он может успешно завершиться.Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | ocidl.h |