Freigeben über


IAdviseSink::OnDataChange-Methode (objidl.h)

Wird vom Server aufgerufen, um die aktuell registrierten Empfehlungssenken eines Datenobjekts zu benachrichtigen, dass sich die Daten im Objekt geändert haben.

Syntax

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

Parameter

[in] pFormatetc

Ein Zeiger auf eine FORMATTC-Struktur , die das Format, das Zielgerät, das Rendering und die Speicherinformationen des aufrufenden Datenobjekts beschreibt.

[in] pStgmed

Ein Zeiger auf eine STGMEDIUM-Struktur , die das Speichermedium (globaler Speicher, Datenträgerdatei, Speicherobjekt, Streamobjekt, GDI-Objekt oder undefiniert) und den Besitz dieses Mediums für das aufrufende Datenobjekt definiert.

Rückgabewert

Keine

Bemerkungen

Objekthandler und Container von Linkobjekten implementieren IAdviseSink::OnDataChange , um geeignete Schritte auszuführen, wenn die Daten im Objekt geändert wurden. Sie müssen auch IDataObject::D Advise aufrufen, um Beratungsverbindungen mit den Objekten einzurichten, an denen sie interessiert sind.

Container, die die Zwischenspeicherungsunterstützung von OLE nutzen, müssen sich nicht für Datenänderungsbenachrichtigungen registrieren, da die Informationen, die zum Aktualisieren der Präsentation des Objekts durch den Container erforderlich sind, einschließlich aller Änderungen an den Daten, im Cache des Objekts beibehalten werden.

Hinweise für Implementierer

Wenn Sie IAdviseSink::OnDataChange für einen Container implementieren, denken Sie daran, dass diese Methode asynchron ist und dass synchrone Aufrufe innerhalb asynchroner Methoden ungültig sind. Daher können Sie IDataObject::GetData nicht aufrufen, um die Daten abzurufen, die Sie zum Aktualisieren des Objekts benötigen. Stattdessen posten Sie entweder eine interne Nachricht oder ungültig das Rechteck für die geänderten Daten, indem Sie InvalidateRect aufrufen und auf eine WM_PAINT Nachricht warten. An diesem Punkt können Sie die Daten abrufen und das Objekt aktualisieren.

Die Daten selbst, die nur für die Dauer des Aufrufs gültig sind, werden mithilfe des Speichermediums übergeben, auf das pStgmed verweist. Da der Anrufer das Medium besitzt, sollte die Beratungssenke es nicht freigeben. Wenn pStgmed auf eine IStorage - oder IStream-Schnittstelle verweist, darf die Senke die Verweisanzahl nicht erhöhen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

Iadvisesink