Método IOleUndoManager::Close (ocidl.h)

Cierra la unidad de deshacer primaria especificada.

Sintaxis

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

Parámetros

[in] pPUU

Puntero a una interfaz IOleParentUndoUnit para que se cierre la unidad primaria abierta actualmente.

[in] fCommit

Indica si se debe mantener o descartar la unidad. Si es TRUE, la unidad se mantiene en la colección. Si es FALSE, se descarta la unidad. Este parámetro se usa para permitir que el cliente descarte una unidad de deshacer en construcción si se produce un error o una cancelación.

Valor devuelto

Este método devuelve S_OK si el administrador de deshacer tenía una unidad de deshacer primaria abierta y se cerró correctamente. Si el administrador de deshacer está deshabilitado, debe devolver inmediatamente S_OK y no hacer nada más. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
S_FALSE
La unidad de deshacer primaria no tenía un elemento secundario abierto y se cerró correctamente.
E_INVALIDARG
Si pPUU no coincide con la unidad de deshacer primaria abierta actualmente, las implementaciones de este método deben devolver E_INVALIDARG sin cambiar ningún estado interno a menos que se bloquee la unidad primaria.

Comentarios

Este método se implementa igual que IOleParentUndoUnit::Close. Una unidad de deshacer primaria sabe que se está cerrando cuando devuelve S_FALSE de este método. En ese momento, debe finalizar cualquier comunicación con otros objetos que puedan proporcionarle datos a través de interfaces privadas.

Notas a los autores de llamadas

Una devolución de error indica una condición de error irrecuperable.

La unidad primaria o el administrador de deshacer deben aceptar la unidad de deshacer si fCommit es TRUE.

Nota para los implementadores

Para procesar una solicitud de cierre, una unidad de deshacer primaria comprueba primero si tiene una unidad secundaria abierta. Si no es así, devuelve S_FALSE.

Si tiene abierta una unidad secundaria, llama al método IOleUndoManager::Close en el elemento secundario. Si el elemento secundario devuelve S_FALSE, la unidad de deshacer primaria comprueba que pPUU apunta a la unidad secundaria y cierra esa unidad de deshacer secundaria. Si el elemento secundario devuelve S_OK, controló el cierre internamente y su elemento primario no debería hacer nada.

Si la unidad primaria está bloqueada, debe comprobar el parámetro pPUU para determinar el código de retorno adecuado. Si pPUU apunta a sí mismo, debe devolver S_FALSE.

De lo contrario, debe devolver S_OK; se omite el parámetro fCommit ; y no se realiza ninguna acción.

Si pPUU no coincide con la unidad de deshacer primaria abierta actualmente, las implementaciones de este método deben devolver E_INVALIDARG sin cambiar ningún estado interno. La única excepción a esto es si la unidad está bloqueada.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ocidl.h

Consulte también

IOleParentUndoUnit::Close

IOleUndoManager