Classe IDispEventImpl
Essa classe fornece implementações do IDispatch métodos.
template <
UINT nID,
class T,
const IID* pdiid = &IID_NULL,
const GUID* plibid = &GUID_NULL,
WORD wMajor = 0,
WORD wMinor = 0,
class tihclass = CcomTypeInfoHolder
>
class ATL_NO_VTABLE IDispEventImpl :
public IDispEventSimpleImpl<nID, T, pdiid>
Parâmetros
nID
Um identificador exclusivo para o objeto de fonte.Quando IDispEventImpl é a classe base para um controle composto, usar a ID de recurso do controle contido desejada para este parâmetro. Em outros casos, use um inteiro positivo arbitrário.T
Classe do usuário, que é derivada de IDispEventImpl.pdiid
O ponteiro para o IID do evento dispinterface implementada por esta classe.Essa interface deve ser definida na biblioteca de tipos indicada por plibid, wMajor, e wMinor.plibid
Um ponteiro para a biblioteca de tipos que define a interface dispatch apontada por pdiid. If &GUID_NULL, a biblioteca de tipos será carregada do objeto fonte de eventos.wMajor
A versão principal da biblioteca de tipos.O valor padrão é 0.wMinor
A versão secundária da biblioteca de tipos.O valor padrão é 0.tihclass
A classe usada para gerenciar as informações de tipo de T. O valor padrão é uma classe do tipo CComTypeInfoHolder; No entanto, você pode substituir esse parâmetro de modelo, fornecendo uma classe de um tipo diferente de CComTypeInfoHolder.
Comentários
IDispEventImpl Fornece uma maneira de implementar um dispinterface de eventos sem exigir que você forneça o código de implementação para cada método/evento nessa interface. IDispEventImpl fornece implementações da IDispatch métodos. Você só precisa fornecer implementações para os eventos que você está interessado em tratamento.
IDispEventImpl funciona em conjunto com o MAP de coletor de evento na sua classe aos eventos de rota para a função de manipulador apropriado.Para usar essa classe:
Adicionar um SINK_ENTRY or SINK_ENTRY_EX macro para o MAP de coletor de evento para cada evento em cada objeto que você deseja manipular.Ao usar IDispEventImpl sistema autônomo uma classe base de um controle composto, você pode chamar AtlAdviseSinkMap para estabelecer e interromper a conexão com sistema autônomo fontes de evento para todas sistema autônomo entradas além de eventos de coletor de MAP.Em outros casos, ou para obter maior controle, telefonar DispEventAdvise para estabelecer a conexão entre o objeto de fonte e a classe base. De telefonarDispEventUnadvise para interromper a conexão.
Você deve derivar de IDispEventImpl (usando um valor exclusivo para nID) para cada objeto para os quais você precisa manipular eventos. A classe base pode ser reutilizado por unadvising contra um objeto de fonte e, em seguida, avisando em relação a um objeto de fonte diferente, mas o número máximo de objetos de fonte pode ser tratado por um único objeto de uma só vez é limitado pelo número de IDispEventImpl classes base.
IDispEventImpl Fornece a mesma funcionalidade que IDispEventSimpleImpl, exceto que ele obtém informações de tipo sobre a interface de uma biblioteca de tipos em vez de ter que ele fornecido sistema autônomo um ponteiro para um _ATL_FUNC_INFO estrutura.Use IDispEventSimpleImpl Quando você não têm uma biblioteca de tipos descrevendo a interface de eventos ou deseja evitar a sobrecarga associada usando a biblioteca de tipo.
Observação: |
---|
IDispEventImpl e IDispEventSimpleImpl fornecer sua própria implementação de IUnknown::QueryInterface permitindo que cada IDispEventImpl e IDispEventSimpleImpl classe base para atuar sistema autônomo uma identidade separada COM e, ao mesmo tempo, permitir acesso direto aos membros da classe em seu objeto COM principal. |
CE ATL a implementação do ActiveX Coletores de eventos só dá suporte a valores de retorno do tipo HRESULT ou retorno de void de seus métodos de manipulador de eventos; qualquer Outros valor não é suportado e seu comportamento é indefinido.
Para obter mais informações, consulte Suporte IDispEventImpl.
Requisitos
Cabeçalho: atlcom.h