Compartir a través de


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

Llamado por el servidor para notificar a los receptores registrados actualmente un objeto de datos, los datos del objeto han cambiado.

Sintaxis

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

Parámetros

[in] pFormatetc

Puntero a una estructura FORMATETC , que describe el formato, el dispositivo de destino, la representación y la información de almacenamiento del objeto de datos que llama.

[in] pStgmed

Puntero a una estructura STGMEDIUM , que define el medio de almacenamiento (memoria global, archivo de disco, objeto de almacenamiento, objeto de secuencia, objeto GDI o sin definir) y la propiedad de ese medio para el objeto de datos que llama.

Valor devuelto

None

Observaciones

Los controladores de objetos y contenedores de objetos de vínculo implementan IAdviseSink::OnDataChange para realizar los pasos adecuados cuando se notifica que los datos del objeto han cambiado. También deben llamar a IDataObject::D Advise para configurar conexiones de asesoramiento con los objetos en cuyos datos están interesados.

Los contenedores que aprovechan la compatibilidad con el almacenamiento en caché de OLE no necesitan registrarse para las notificaciones de cambio de datos, ya que la información necesaria para actualizar la presentación del objeto del contenedor, incluidos los cambios en sus datos, se mantienen en la memoria caché del objeto.

Notas para los implementadores

Si implementa IAdviseSink::OnDataChange para un contenedor, recuerde que este método es asincrónico y que realizar llamadas sincrónicas dentro de métodos asincrónicos no es válido. Por lo tanto, no puede llamar a IDataObject::GetData para obtener los datos que necesita para actualizar el objeto. En su lugar, publique un mensaje interno o invalide el rectángulo de los datos modificados llamando a InvalidateRect y esperando un mensaje de WM_PAINT , en cuyo momento puede obtener los datos y actualizar el objeto.

Los propios datos, que solo son válidos durante la llamada, se pasan mediante el medio de almacenamiento al que apunta pStgmed. Dado que el autor de la llamada posee el medio, el receptor de avisos no debe liberarlo. Además, si pStgmed apunta a una interfaz IStorage o IStream , el receptor no debe incrementar el recuento de referencias.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IAdviseSink