Compartilhar via


Enumeração ADVF (objidl.h)

Sinalizadores que controlam o cache e a notificação de alterações nos dados.

Syntax

typedef enum tagADVF {
  ADVF_NODATA = 1,
  ADVF_PRIMEFIRST = 2,
  ADVF_ONLYONCE = 4,
  ADVF_DATAONSTOP = 64,
  ADVFCACHE_NOHANDLER = 8,
  ADVFCACHE_FORCEBUILTIN = 16,
  ADVFCACHE_ONSAVE = 32
} ADVF;

Constantes

 
ADVF_NODATA
Valor: 1
Para conexões de consultoria de dados (IDataObject::D Advise ou IDataAdviseHolder::Advise), esse sinalizador solicita que o objeto de dados não envie dados quando chama IAdviseSink::OnDataChange. O destinatário da notificação de alteração pode solicitar os dados posteriormente chamando IDataObject::GetData. O objeto de dados pode atender à solicitação passando TYMED_NULL no parâmetro STGMEDIUM ou pode fornecer os dados de qualquer maneira. Por exemplo, o objeto de dados pode ter várias conexões de consultoria, não todas especificadas ADVF_NODATA, nesse caso, o objeto pode enviar a mesma notificação para todas as conexões. Independentemente da solicitação do contêiner, sua implementação IAdviseSink deve marcar o parâmetro STGMEDIUM porque ele é responsável por liberar o meio se não for TYMED_NULL.

Para conexões de cache (IOleCache::Cache), esse sinalizador solicita que o cache não seja atualizado por alterações feitas no objeto em execução. Em vez disso, o contêiner atualizará o cache chamando explicitamente IOleCache::SetData. Normalmente, essa situação ocorre quando o aspecto icônico de um objeto está sendo armazenado em cache.

ADVF_NODATA não é um sinalizador válido para exibir conexões de consultoria (IViewObject::SetAdvise) e retorna E_INVALIDARG.
ADVF_PRIMEFIRST
Valor: 2
Solicita que o objeto não aguarde a alteração dos dados ou da exibição antes de fazer uma chamada inicial para IAdviseSink::OnDataChange (para conexões de consultoria de dados ou exibição) ou atualizar o cache (para conexões de cache). Usado com ADVF_ONLYONCE, esse parâmetro fornece uma chamada assíncrona IDataObject::GetData .
ADVF_ONLYONCE
Valor: 4
Solicita que o objeto faça apenas uma notificação de alteração ou atualização de cache antes de excluir a conexão.

ADVF_ONLYONCE exclui automaticamente a conexão de consultoria depois de enviar um dado ou exibir notificação. O coletor de consultoria recebe apenas uma chamada IAdviseSink . Um identificador de conexão diferente de zero será retornado se a conexão for estabelecida, para que o chamador possa usá-la para excluir a conexão antes da primeira notificação de alteração.

Para notificações de alteração de dados, a combinação de ADVF_ONLYONCE e ADVF_PRIMEFIRST fornece, de fato, uma chamada assíncrona IDataObject::GetData .

Quando usado com cache, ADVF_ONLYONCE atualiza o cache apenas uma vez, ao receber a primeira notificação IAdviseSink::OnDataChange . Depois que a atualização for concluída, a conexão de consultoria entre o objeto e o cache será desconectada. O objeto de origem para a conexão de consultoria chama o método Release .
ADVF_DATAONSTOP
Valor: 64
Para conexões de consultoria de dados, garanta a acessibilidade aos dados. Esse sinalizador indica que, quando o objeto de dados está fechando, ele deve chamar , fornecendo dados com a chamada. Normalmente, esse valor é usado em combinação com ADVF_NODATA. Sem ovalor de IAdviseSink::OnDataChange , quando uma chamada OnDataChange sem dados atingir o coletor, a fonte poderá ter concluído seu desligamento e os dados podem não estar acessíveis. Os coletores que especificam esse valor devem aceitar dados fornecidos em OnDataChange se eles estiverem sendo passados, pois eles podem não ter outra chance de recuperá-los.

Para conexões de cache, esse sinalizador indica que o objeto deve atualizar o cache como parte do fechamento do objeto.

ADVF_DATAONSTOP não é um sinalizador válido para exibir conexões de consultoria.
ADVFCACHE_NOHANDLER
Valor: 8
Sinônimo de ADVFCACHE_FORCEBUILTIN, que é usado com mais frequência.
ADVFCACHE_FORCEBUILTIN
Valor: 16
Esse valor é usado por aplicativos de objeto DLL e manipuladores de objeto que executam o desenho de seus objetos. ADVFCACHE_FORCEBUILTIN instrui o OLE a armazenar em cache dados de apresentação para garantir que haja uma apresentação no cache. Esse valor não é um sinalizador válido para conexões de aviso de exibição ou dados. Para conexões de cache, esse sinalizador armazena em cache dados que exigem que apenas o código enviado com o OLE (ou o sistema operacional subjacente) esteja presente para produzi-lo com IDataObject::GetData ou IViewObject::D raw. Ao especificar esse valor, o contêiner pode garantir que os dados possam ser recuperados mesmo quando o objeto ou código do manipulador não estiver disponível.
ADVFCACHE_ONSAVE
Valor: 32
Para conexões de cache, esse sinalizador atualiza a representação armazenada em cache apenas quando o objeto que contém o cache é salvo. O cache também é atualizado quando o objeto OLE faz a transição do estado em execução de volta para o estado carregado (porque uma operação de salvamento subsequente exigiria executar novamente o objeto). Esse valor não é um sinalizador válido para conexões de aviso de exibição ou dados.

Comentários

Para uma conexão de consultoria de dados ou exibição, o contêiner usa as constantes ADVF ao configurar uma conexão entre uma instância IAdviseSink e uma instância IDataObject ou IViewObject . Essas conexões são configuradas usando os métodos IDataObject::D Advise, IDataAdviseHolder::Advise ou IViewObject::SetAdvise .

Para uma conexão de cache, as constantes são especificadas no método IOleCache::Cache para indicar as solicitações do contêiner sobre como o objeto deve atualizar seu cache.

Essas constantes também são usadas no membro advf da estrutura STATDATA . Essa estrutura é usada por IEnumSTATDATA para descrever as conexões enumeradas e o membro advf indica os sinalizadores especificados quando a conexão de consultoria ou cache foi estabelecida. Quando STATDATA é usado para um enumerador IOleObject::EnumAdvise , o membro advf é indeterminado.

Requisitos

   
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]
Cabeçalho objidl.h

Confira também

IDataAdviseHolder

Idataobject

Ienumstatdata

IOleCache

Iviewobject