共用方式為


IOleUndoManager::UndoTo 方法 (ocidl.h)

指示復原管理員透過復原堆疊叫用復原動作,並向下叫用復原動作,並包含指定的復原單位。

語法

HRESULT UndoTo(
  [in] IOleUndoUnit *pUU
);

參數

[in] pUU

要復原的最上層單位指標。 如果此參數為 NULL,則會使用最近新增的最上層單位。

傳回值

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

傳回碼 Description
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