IOleUndoManager::Close 方法 (ocidl.h)

关闭指定的父撤消单元。

语法

HRESULT Close(
  [in] IOleParentUndoUnit *pPUU,
  [in] BOOL               fCommit
);

参数

[in] pPUU

指向当前打开的父单元要关闭的 IOleParentUndoUnit 接口的指针。

[in] fCommit

指示是保留还是放弃单位。 如果 为 TRUE,则单元保留在集合中。 如果 为 FALSE,则放弃该单位。 此参数用于允许客户端在发生错误或取消时放弃正在构造的撤消单元。

返回值

如果撤消管理器具有打开的父撤消单元并且已成功关闭,此方法将返回S_OK。 如果撤消管理器处于禁用状态,它应立即返回S_OK,且不执行任何其他操作。 其他可能的返回值包括以下内容。

返回代码 说明
S_FALSE
父撤消单元没有打开的子单元,并且已成功关闭。
E_INVALIDARG
如果 pPUU 与当前打开的父撤消单元不匹配,则此方法的实现应返回E_INVALIDARG,而不会更改任何内部状态,除非父单元被阻止。

注解

此方法的实现方式与 IOleParentUndoUnit::Close 相同。 父撤消单元知道当它从此方法返回S_FALSE时它正在关闭。 此时,它应终止与可能通过专用接口向其提供数据的其他对象之间的任何通信。

调用方备注

错误返回指示严重错误条件。

如果 fCommitTRUE,父单元或撤消管理器必须接受撤消单元。

实现者注意事项

若要处理关闭请求,父撤消单元首先检查其是否具有打开的子单元。 如果没有,则返回S_FALSE。

如果确实打开了子单元,则会对子单元调用 IOleUndoManager::Close 方法。 如果子级返回S_FALSE,则父撤消单元将验证 pPUU 指向子单元,并关闭该子撤消单元。 如果子级返回S_OK则它在内部处理了关闭,其父级不应执行任何操作。

如果父单元被阻止,它应检查 pPUU 参数来确定适当的返回代码。 如果 pPUU 指向自身,则应返回S_FALSE。

否则,它应返回S_OK; 忽略 fCommit 参数;且不执行任何操作。

如果 pPUU 与当前打开的父撤消单元不匹配,则此方法的实现应返回E_INVALIDARG而不更改任何内部状态。 唯一的例外是单元被阻止。

要求

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

另请参阅

IOleParentUndoUnit::Close

IOleUndoManager