IOleParentUndoUnit::Close 方法 (ocidl.h)

關閉指定的父復原單位。

語法

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

參數

[in] pPUU

要關閉之目前開啟父單位的 IOleParentUndoUnit 指標。

[in] fCommit

指出是否要保留或捨棄單位。 如果為 TRUE,則單位會保留在集合中。 如果 為 FALSE,則會捨棄單位。 此參數可用來允許客戶端在發生錯誤或取消時捨棄建構中的復原單位。

傳回值

此方法會在成功時傳回S_OK。 其他可能的傳回值包括下列專案。

傳回碼 Description
S_FALSE
父復原單位沒有開啟的子系,而且已成功關閉。
E_INVALIDARG
如果 pPUU 不符合目前開啟的父復原單位,則除非封鎖父單位,否則此方法的實作應該會傳回E_INVALIDARG而不變更任何內部狀態。

備註

父復原單位知道從這個方法傳回S_FALSE時,它正在關閉。 此時,它應該終止與其他對象之間的任何通訊,這些物件可能會透過私用介面將數據提供給它。

來電者附註

錯誤傳回表示嚴重錯誤狀況。

如果 fCommitTRUE,父單位或復原管理員必須接受復原單位。

實作者的注意事項

若要處理關閉要求,父復原單元會先檢查是否有開啟的子單元。 如果沒有,則會傳回S_FALSE。

如果子單元已開啟,它會在子系上呼叫 IOleParentUndoUnit::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

IOleParentUndoUnit::Close