Partager via


IOleObject ::Close, méthode (oleidl.h)

Change un objet incorporé de l’en cours d’exécution à l’état chargé. Déconnecte un objet lié de sa source de lien.

Syntaxe

HRESULT Close(
  [in] DWORD dwSaveOption
);

Paramètres

[in] dwSaveOption

Indique si l’objet doit être enregistré dans le cadre de la transition à l’état chargé. Les valeurs valides sont extraites de l’énumération OLECLOSE.

Note Le modèle utilisateur OLE 2 recommande que les applications objet n’invitent pas les utilisateurs avant d’enregistrer les objets liés ou incorporés, y compris ceux activés sur place. Cette stratégie représente une modification du modèle utilisateur OLE 1, dans lequel les applications objet invitent toujours l’utilisateur à décider s’il faut enregistrer les modifications.
 

Valeur retournée

Cette méthode retourne S_OK en cas de réussite. Les autres valeurs de retour possibles sont les suivantes.

Code de retour Description
OLE_E_PROMPTSAVECANCELLED
L’utilisateur a été invité à enregistrer, mais a choisi le bouton Annuler dans la zone de message d’invite.

Remarques

Notes aux appelants

Une application conteneur appelle IOleObject ::Close lorsqu’elle souhaite déplacer l’objet d’un état en cours d’exécution vers un état chargé. Après un tel appel, l’objet apparaît toujours dans son conteneur, mais n’est pas ouvert pour modification. L’appel de IOleObject ::Fermer sur un objet qui est chargé mais qui n’est pas en cours d’exécution n’a aucun effet. La fermeture d’un objet lié signifie simplement le déconnecter.

Notes aux implémenteurs

Lors de la réception d’un appel à IOleObject ::Close, un objet en cours d’exécution doit effectuer les opérations suivantes :
  • Si l’objet a été modifié depuis sa dernière ouverture pour modification, il doit demander à être enregistré, ou non, conformément aux instructions spécifiées dans dwSaveOption. Si l’option consiste à enregistrer l’objet, elle doit appeler l’interface IOleClientSite ::SaveObject de son conteneur.
  • Si l’objet a des connexions IDataObject ::D Advise avec des indicateurs ADVF_DATAONSTOP, il doit envoyer une notification IAdviseSink ::OnDataChange . Pour plus d’informations, consultez IDataObject ::D Advise .
  • Si l’objet est actuellement propriétaire du Presse-papiers, il doit le vider en appelant OleFlushClipboard.
  • Si l’objet est actuellement visible, informez son conteneur en appelant IOleClientSite ::OnShowWindow avec l’argument fshow défini sur FALSE.
  • Envoyez des notifications IAdviseSink ::OnClose aux récepteurs conseillés appropriés.
  • Enfin, coupez de force tous les clients de communication à distance en appelant CoDisconnectObject.
Si l’application objet est un serveur local (un EXE plutôt qu’une DLL), la fermeture de l’objet doit également arrêter l’application d’objet, sauf si cette dernière prend en charge d’autres objets en cours d’exécution ou a une autre raison de rester à l’état en cours d’exécution. Ces raisons peuvent inclure la présence de verrous IClassFactory ::LockServer , le contrôle de l’application par l’utilisateur final ou l’existence d’autres documents ouverts nécessitant l’accès à l’application.

L’appel de IOleObject ::Close sur un objet lié le déconnecte de son application source, mais ne l’arrête pas. Une application source visible par l’utilisateur lorsque l’objet est fermé reste visible et en cours d’exécution après la déconnexion et n’envoie pas de notification IAdviseSink ::OnClose au conteneur de liens.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête oleidl.h

Voir aussi

CoDisconnectObject

IAdviseSink ::OnClose

IClassFactory ::LockServer

IDataObject ::D Advise

IOleClientSite ::OnShowWindow

IOleClientSite ::SaveObject

IOleObject

OLECLOSE

OleFlushClipboard