Share via


Méthode IAdviseSink ::OnDataChange (objidl.h)

Appelé par le serveur pour notifier les récepteurs actuellement inscrits d’un objet de données, indiquent aux récepteurs que les données de l’objet ont changé.

Syntaxe

void OnDataChange(
  [in] FORMATETC *pFormatetc,
  [in] STGMEDIUM *pStgmed
);

Paramètres

[in] pFormatetc

Pointeur vers une structure FORMATETC , qui décrit le format, l’appareil cible, le rendu et les informations de stockage de l’objet de données appelant.

[in] pStgmed

Pointeur vers une structure STGMEDIUM , qui définit le support de stockage (mémoire globale, fichier disque, objet de stockage, objet de flux, objet GDI ou non défini) et la propriété de ce support pour l’objet de données appelant.

Valeur de retour

None

Remarques

Les gestionnaires d’objets et les conteneurs d’objets de liaison implémentent IAdviseSink ::OnDataChange pour prendre les mesures appropriées lorsqu’ils sont avertis que les données de l’objet ont changé. Ils doivent également appeler IDataObject ::D Advise pour configurer des connexions de conseil avec les objets dont les données les intéressent.

Les conteneurs qui tirent parti de la prise en charge de la mise en cache d’OLE n’ont pas besoin de s’inscrire aux notifications de modification de données, car les informations nécessaires pour mettre à jour la présentation de l’objet, y compris les modifications apportées à ses données, sont conservées dans le cache de l’objet.

Remarques aux implémenteurs

Si vous implémentez IAdviseSink ::OnDataChange pour un conteneur, n’oubliez pas que cette méthode est asynchrone et que l’exécution d’appels synchrones dans des méthodes asynchrones n’est pas valide. Par conséquent, vous ne pouvez pas appeler IDataObject ::GetData pour obtenir les données dont vous avez besoin pour mettre à jour votre objet. Au lieu de cela, vous publiez un message interne ou invalidez le rectangle pour les données modifiées en appelant InvalidateRect et en attendant un message WM_PAINT , auquel cas vous êtes libre d’obtenir les données et de mettre à jour l’objet.

Les données elles-mêmes, qui sont valides uniquement pendant la durée de l’appel, sont passées à l’aide du support de stockage pointé par pStgmed. Étant donné que l’appelant est propriétaire du support, le récepteur de conseil ne doit pas le libérer. En outre, si pStgmed pointe vers une interface IStorage ou IStream , le récepteur ne doit pas incrémenter le nombre de références.

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