IOleUndoManager::UndoTo 方法 (ocidl.h)

指示撤消管理器通过撤消堆栈调用撤消操作,并包括指定的撤消单元。

语法

HRESULT UndoTo(
  [in] IOleUndoUnit *pUU
);

参数

[in] pUU

指向要撤消的顶级单位的指针。 如果此参数为 NULL,则使用最近添加的顶级单位。

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
E_INVALIDARG
指定的撤消单元不在撤消堆栈上。
E_ABORT
撤消尝试和回滚尝试均失败。 撤消管理器绝不应传播从包含的撤消单元获取的E_ABORT。 相反,它应将从其他撤消单位返回的任何E_ABORT值映射到E_FAIL。 撤消管理器应将从其他撤消单元返回的任何E_ABORT值映射到E_FAIL,因为 IOleUndoManager::UndoTo 的调用方知道撤消尝试和回滚尝试失败,这是E_ABORT返回值的唯一原因。
E_UNEXPECTED
撤消管理器已禁用。

注解

此方法在每个顶级撤消单元上调用 IOleUndoUnit::D o 方法。 然后,它释放该撤消单元。

请注意,指定的撤消单元必须是顶级单位,通常通过 IOleUndoManager::EnumUndoable 检索。

如果撤消单元返回错误,撤消管理器需要尝试通过对重做堆栈执行操作来回滚文档的状态,以便从错误中恢复。

无论回滚是否成功,撤消管理器都应始终在返回错误之前清除这两个堆栈。

如果撤消管理器在多个顶级单元上调用了 Do 方法,则它应仅回滚返回错误的单元。 不应回滚成功的顶级单位。

撤消管理器还必须跟踪是否已将单元添加到相反的堆栈,以便在未添加任何内容时不会尝试回滚。 有关错误处理的详细说明,请参阅 IOleUndoManager 接口。

调用方备注

撤消单元可以将E_ABORT返回为失败,但这对 IOleUndoUnit 没有具体的含义。 由于撤消管理器通常会返回失败的撤消单元给出的错误代码,并且E_ABORT对 IOleUndoManager::UndoTo 具有特定含义,因此撤消管理器绝不应传递E_ABORT,因为调用方会将它解释为回滚失败,而实际上它可能已成功。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ocidl.h

另请参阅

IOleUndoManager

IOleUndoManager::EnumUndoable

IOleUndoManager::RedoTo

IOleUndoUnit::D o