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

Altera um objeto inserido do em execução para o estado carregado. Desconecta um objeto vinculado de sua fonte de link.

Sintaxe

HRESULT Close(
  [in] DWORD dwSaveOption
);

Parâmetros

[in] dwSaveOption

Indica se o objeto deve ser salvo como parte da transição para o estado carregado. Os valores válidos são obtidos da enumeração OLECLOSE.

Nota O modelo de usuário OLE 2 recomenda que os aplicativos de objeto não solicitem aos usuários antes de salvar objetos vinculados ou inseridos, incluindo aqueles ativados no local. Essa política representa uma alteração do modelo de usuário OLE 1, na qual os aplicativos de objeto sempre solicitam que o usuário decida se deseja salvar as alterações.
 

Retornar valor

Esse método retorna S_OK em caso de êxito. Outros valores retornados possíveis incluem o seguinte.

Código de retorno Descrição
OLE_E_PROMPTSAVECANCELLED
O usuário foi solicitado a salvar, mas escolheu o botão Cancelar na caixa de mensagem de prompt.

Comentários

Anotações aos Chamadores

Um aplicativo de contêiner chama IOleObject::Close quando deseja mover o objeto de uma execução para um estado carregado. Após essa chamada, o objeto ainda aparece em seu contêiner, mas não está aberto para edição. Chamar IOleObject::Close em um objeto carregado, mas que não está em execução, não tem efeito. Fechar um objeto vinculado significa simplesmente desconectá-lo.

Observações aos implementadores

Ao receber uma chamada para IOleObject::Close, um objeto em execução deve fazer o seguinte:
  • Se o objeto tiver sido alterado desde que foi aberto pela última vez para edição, ele deverá solicitar que seja salvo ou não, de acordo com as instruções especificadas em dwSaveOption. Se a opção for salvar o objeto, ela deverá chamar a interface IOleClientSite::SaveObject do contêiner.
  • Se o objeto tiver conexões IDataObject::D Advise com sinalizadores _DATAONSTOP ADVF, ele deverá enviar uma notificação IAdviseSink::OnDataChange . Consulte IDataObject::D Advise para obter detalhes.
  • Se o objeto for atualmente proprietário da Área de Transferência, ele deverá esvaziá-lo chamando OleFlushClipboard.
  • Se o objeto estiver visível no momento, notifique seu contêiner chamando IOleClientSite::OnShowWindow com o argumento fshow definido como FALSE.
  • Envie notificações de IAdviseSink::OnClose para os coletores de aviso apropriados.
  • Por fim, corte à força todos os clientes de comunicação remota chamando CoDisconnectObject.
Se o aplicativo de objeto for um servidor local (um EXE em vez de uma DLL), fechar o objeto também deverá desligar o aplicativo de objeto, a menos que este último dê suporte a outros objetos em execução ou tenha outro motivo para permanecer no estado em execução. Esses motivos podem incluir a presença de bloqueios IClassFactory::LockServer , o controle do usuário final do aplicativo ou a existência de outros documentos abertos que exijam acesso ao aplicativo.

Chamar IOleObject::Close em um objeto vinculado desconecta-o, mas não desliga seu aplicativo de origem. Um aplicativo de origem que fica visível para o usuário quando o objeto é fechado permanece visível e em execução após a desconexão e não envia uma notificação IAdviseSink::OnClose para o contêiner de link.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho oleidl.h

Confira também

Codisconnectobject

IAdviseSink::OnClose

IClassFactory::LockServer

IDataObject::D Advise

IOleClientSite::OnShowWindow

IOleClientSite::SaveObject

Ioleobject

OLECLOSE

OleFlushClipboard