Compartilhar via


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

Chamado pelo servidor para notificar os coletores de aviso atualmente registrados de um objeto de dados de que os dados no objeto foram alterados.

Sintaxe

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

Parâmetros

[in] pFormatetc

Um ponteiro para uma estrutura FORMATETC , que descreve o formato, o dispositivo de destino, a renderização e as informações de armazenamento do objeto de dados de chamada.

[in] pStgmed

Um ponteiro para uma estrutura STGMEDIUM , que define o meio de armazenamento (memória global, arquivo de disco, objeto de armazenamento, objeto de fluxo, objeto GDI ou indefinido) e a propriedade desse meio para o objeto de dados de chamada.

Retornar valor

Nenhum

Comentários

Manipuladores de objetos e contêineres de objetos de link implementam IAdviseSink::OnDataChange para executar as etapas apropriadas quando notificados de que os dados no objeto foram alterados. Eles também devem chamar IDataObject::D Advise para configurar conexões de consultoria com os objetos em cujos dados eles estão interessados.

Os contêineres que aproveitam o suporte ao cache do OLE não precisam se registrar para notificações de alteração de dados, pois as informações necessárias para atualizar a apresentação do objeto do contêiner, incluindo quaisquer alterações em seus dados, são mantidas no cache do objeto.

Anotações aos implementadores

Se você implementar IAdviseSink::OnDataChange para um contêiner, lembre-se de que esse método é assíncrono e que fazer chamadas síncronas em métodos assíncronos não é válido. Portanto, você não pode chamar IDataObject::GetData para obter os dados necessários para atualizar seu objeto. Em vez disso, você posta uma mensagem interna ou invalida o retângulo dos dados alterados chamando InvalidateRect e aguardando uma mensagem de WM_PAINT , momento em que você está livre para obter os dados e atualizar o objeto.

Os dados em si, que são válidos apenas durante a chamada, são passados usando o meio de armazenamento apontado por pStgmed. Como o chamador é proprietário do meio, o coletor de aconselhamento não deve liberá-lo. Além disso, se pStgmed apontar para uma interface IStorage ou IStream , o coletor não deverá incrementar a contagem de referência.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Iadvisesink