Поделиться через


Метод IOleParentUndoUnit::Close (ocidl.h)

Закрывает указанный родительский модуль отмены.

Синтаксис

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

Параметры

[in] pPUU

Указатель IOleParentUndoUnit на текущий открытый родительский блок, который необходимо закрыть.

[in] fCommit

Указывает, следует ли сохранить или отменить единицу. Если задано значение TRUE, единица сохраняется в коллекции. Если значение РАВНО FALSE, единица отбрасывается. Этот параметр используется для того, чтобы разрешить клиенту отменить строящихся единицу отмены при возникновении ошибки или отмены.

Возвращаемое значение

Этот метод возвращает значение S_OK при успешном завершении. Другие возможные возвращаемые значения включают следующее.

Код возврата Описание
S_FALSE
Родительский блок отмены не имеет открытого дочернего элемента и был успешно закрыт.
E_INVALIDARG
Если pPUU не соответствует текущей открытой родительской единице отмены, то реализации этого метода должны возвращать E_INVALIDARG без изменения внутреннего состояния, если родительская единица не заблокирована.

Комментарии

Родительский блок отмены знает, что он закрывается, когда возвращает S_FALSE из этого метода. В это время он должен прекратить любое взаимодействие с другими объектами, которые могут предоставлять ему данные через частные интерфейсы.

Примечания к вызывающим абонентам

Возврат ошибки указывает на неустранимую ошибку.

Родительская единица или диспетчер отмены должны принять единицу отмены, если fCommit имеет значение TRUE.

Примечания для разработчиков

Чтобы обработать запрос на закрытие, родительская единица отмены сначала проверяет, есть ли в ней открытый дочерний блок. В противном случае возвращается 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
Header ocidl.h

См. также раздел

IOleParentUndoUnit

IOleParentUndoUnit::Close