Share via


IPersistFile ::IsDirty, méthode (objidl.h)

Détermine si un objet a changé depuis son dernier enregistrement dans son fichier actuel.

Syntaxe

HRESULT IsDirty();

Valeur de retour

Cette méthode retourne S_OK pour indiquer que l’objet a changé. Sinon, elle retourne S_FALSE.

Remarques

Utilisez cette méthode pour déterminer si un objet doit être enregistré avant de le fermer. L’indicateur sale d’un objet est effacé de manière conditionnelle dans la méthode IPersistFile ::Save.

Remarques aux appelants

OLE n’appelle pas IsDirty. Les applications ne l’appellent pas, sauf si elles enregistrent également un objet dans un fichier.

Vous devez traiter les codes de retour d’erreur comme une indication que l’objet a changé. À moins que cette méthode retourne explicitement S_FALSE, supposons que l’objet doit être enregistré.

Remarques aux implémenteurs

Un objet sans objet contenu vérifie simplement son indicateur de sale pour retourner le résultat approprié.

Un conteneur contenant un ou plusieurs objets contenus doit conserver un indicateur de sale interne défini lorsque l’un de ses objets contenus a changé depuis son dernier enregistrement. Pour ce faire, le conteneur doit conserver un récepteur de conseil en implémentant l’interface IAdviseSink . Ensuite, le conteneur peut inscrire chaque lien ou incorporation pour les notifications de modification de données avec un appel à IDataObject ::D Advise. Ensuite, le conteneur peut définir son indicateur de sale interne lorsqu’il reçoit une notification IAdviseSink ::OnDataChange. Si le conteneur ne s’inscrit pas pour les notifications de modification de données, l’implémentation IPersistFile ::IsDirty appelle IPersistStorage ::IsDirty pour chacun de ses objets contenus afin de déterminer s’ils ont changé.

Le conteneur peut effacer son indicateur de sale chaque fois qu’il est enregistré, tant que le fichier dans lequel l’objet est enregistré est le fichier de travail actuel après l’enregistrement. Par conséquent, l’indicateur sale est effacé après une opération Enregistrer ou Enregistrer sous réussie, mais pas après une opération Enregistrer une copie sous . . .

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

Voir aussi

IAdviseSink ::OnDataChange

IDataObject ::D Advise

IPersistFile