Metodo IOleObject::Close (oleidl.h)

Modifica un oggetto incorporato dall'oggetto in esecuzione allo stato caricato. Disconnette un oggetto collegato dall'origine del collegamento.

Sintassi

HRESULT Close(
  [in] DWORD dwSaveOption
);

Parametri

[in] dwSaveOption

Indica se l'oggetto deve essere salvato come parte della transizione allo stato caricato. I valori validi vengono ricavati dall'enumerazione OLECLOSE.

Nota Il modello utente OLE 2 consiglia alle applicazioni oggetto di non richiedere agli utenti di salvare oggetti collegati o incorporati, inclusi quelli attivati sul posto. Questo criterio rappresenta una modifica rispetto al modello utente OLE 1, in cui le applicazioni a oggetti richiedono sempre all'utente di decidere se salvare le modifiche.
 

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo. Gli altri valori restituiti possibili includono i seguenti:

Codice restituito Descrizione
OLE_E_PROMPTSAVECANCELLED
All'utente è stato richiesto di salvare ma è stato scelto il pulsante Annulla dalla finestra di messaggio del prompt.

Commenti

Note ai chiamanti

Un'applicazione contenitore chiama IOleObject::Close quando vuole spostare l'oggetto da un oggetto in esecuzione a uno stato caricato. Dopo una chiamata di questo tipo, l'oggetto viene ancora visualizzato nel contenitore, ma non è aperto per la modifica. La chiamata a IOleObject::Close su un oggetto caricato ma non in esecuzione non ha alcun effetto. La chiusura di un oggetto collegato significa semplicemente disconnetterla.

Note per gli implementatori

Quando si riceve una chiamata a IOleObject::Close, un oggetto in esecuzione deve eseguire le operazioni seguenti:
  • Se l'oggetto è stato modificato dopo l'ultima apertura per la modifica, deve richiedere di essere salvato o meno, in base alle istruzioni specificate in dwSaveOption. Se l'opzione consiste nel salvare l'oggetto, deve chiamare l'interfaccia IOleClientSite::SaveObject del contenitore.
  • Se l'oggetto dispone di connessioni IDataObject::D Advise con flag ADVF_DATAONSTOP, deve inviare una notifica IAdviseSink::OnDataChange . Per informazioni dettagliate, vedere IDataObject::D Advise .
  • Se l'oggetto è attualmente proprietario degli Appunti, lo svuota chiamando OleFlushClipboard.
  • Se l'oggetto è attualmente visibile, inviare una notifica al contenitore chiamando IOleClientSite::OnShowWindow con l'argomento fshow impostato su FALSE.
  • Inviare notifiche IAdviseSink::OnClose ai sink appropriati.
  • Infine, tagliare forzatamente tutti i client remoti chiamando CoDisconnectObject.
Se l'applicazione oggetto è un server locale (exe anziché dll), la chiusura dell'oggetto deve anche arrestare l'applicazione dell'oggetto, a meno che quest'ultimo non supporti altri oggetti in esecuzione o abbia un altro motivo per rimanere nello stato di esecuzione. Tali motivi possono includere la presenza di blocchi IClassFactory::LockServer , il controllo dell'utente finale dell'applicazione o l'esistenza di altri documenti aperti che richiedono l'accesso all'applicazione.

La chiamata a IOleObject::Close su un oggetto collegato la disconnette, ma non arresta, l'applicazione di origine. Un'applicazione di origine visibile all'utente quando l'oggetto viene chiuso rimane visibile e in esecuzione dopo la disconnessione e non invia una notifica IAdviseSink::OnClose al contenitore di collegamento.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione oleidl.h

Vedi anche

CoDisconnectObject

IAdviseSink::OnClose

IClassFactory::LockServer

IDataObject::D Advise

IOleClientSite::OnShowWindow

IOleClientSite::SaveObject

Ioleobject

OLECLOSE

OleFlushClipboard