Método IOleObject::Close (oleidl.h)

Cambia un objeto incrustado de la ejecución al estado cargado. Desconecta un objeto vinculado de su origen de vínculo.

Sintaxis

HRESULT Close(
  [in] DWORD dwSaveOption
);

Parámetros

[in] dwSaveOption

Indica si el objeto se va a guardar como parte de la transición al estado cargado. Los valores válidos se toman de la enumeración OLECLOSE.

Nota El modelo de usuario OLE 2 recomienda que las aplicaciones de objetos no pidan a los usuarios antes de guardar objetos vinculados o incrustados, incluidos los activados en su lugar. Esta directiva representa un cambio del modelo de usuario OLE 1, en el que las aplicaciones de objeto siempre solicitan al usuario que decida si desea guardar los cambios.
 

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
OLE_E_PROMPTSAVECANCELLED
Se le ha pedido al usuario que guarde, pero eligió el botón Cancelar en el cuadro de mensaje del mensaje.

Comentarios

Notas a los autores de llamadas

Una aplicación contenedora llama a IOleObject::Close cuando quiere mover el objeto de una ejecución a un estado cargado. Después de esta llamada, el objeto sigue apareciendo en su contenedor, pero no está abierto para su edición. Llamar a IOleObject::Close en un objeto que se carga pero que no se ejecuta no tiene ningún efecto. Cerrar un objeto vinculado simplemente significa desconectarlo.

Notas para los implementadores

Al recibir una llamada a IOleObject::Close, un objeto en ejecución debe hacer lo siguiente:
  • Si el objeto se ha cambiado desde que se abrió por última vez para su edición, debe solicitar guardarse o no, según las instrucciones especificadas en dwSaveOption. Si la opción es guardar el objeto, debe llamar a la interfaz IOleClientSite::SaveObject del contenedor.
  • Si el objeto tiene marcas IDataObject::D Advise con ADVF_DATAONSTOP marcas, debe enviar una notificación IAdviseSink::OnDataChange . Consulte IDataObject::D Advise para obtener más información.
  • Si el objeto posee actualmente el Portapapeles, debe vaciarlo llamando a OleFlushClipboard.
  • Si el objeto está visible actualmente, notifique a su contenedor llamando a IOleClientSite::OnShowWindow con el argumento fshow establecido en FALSE.
  • Envíe notificaciones IAdviseSink::OnClose a receptores de asesoramiento adecuados.
  • Por último, cortó forzosamente todos los clientes de comunicación remota mediante una llamada a CoDisconnectObject.
Si la aplicación de objeto es un servidor local (exe en lugar de un archivo DLL), cerrar el objeto también debe apagar la aplicación de objeto a menos que el último admita otros objetos en ejecución o tenga otro motivo para permanecer en estado de ejecución. Estos motivos pueden incluir la presencia de bloqueos IClassFactory::LockServer , el control de usuario final de la aplicación o la existencia de otros documentos abiertos que requieren acceso a la aplicación.

Llamar a IOleObject::Close en un objeto vinculado lo desconecta, pero no se apaga, su aplicación de origen. Una aplicación de origen que es visible para el usuario cuando el objeto está cerrado permanece visible y en ejecución después de la desconexión y no envía una notificación IAdviseSink::OnClose al contenedor de vínculos.

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 oleidl.h

Consulte también

CoDisconnectObject

IAdviseSink::OnClose

IClassFactory::LockServer

IDataObject::D Advise

IOleClientSite::OnShowWindow

IOleClientSite::SaveObject

IOleObject

OLECLOSE

OleFlushClipboard