Compartilhar via


Mapas de coleta de evento

Quando um controle OLE inserido dispara um evento, o contêiner do controle recebe o evento usando um mecanismo, chamado "mapa do coletor de eventos", fornecido pelo MFC. Esse mapa do coletor de eventos designa funções de manipulador para cada evento específico, bem como parâmetros desses eventos. Para obter mais informações sobre mapas do coletor de eventos, consulte o artigo Contêineres de controle ActiveX.

Mapas de coleta de evento

Nome Descrição
BEGIN_EVENTSINK_MAP Inicia a definição de um mapa de coletor de eventos.
DECLARE_EVENTSINK_MAP Declara um mapa de coletor de eventos.
END_EVENTSINK_MAP Encerra a definição de um mapa de coletor de eventos.
ON_EVENT Define um manipulador de eventos para um evento específico.
ON_EVENT_RANGE Define um manipulador de eventos para um evento específico disparado de um conjunto de controles OLE.
ON_EVENT_REFLECT Recebe eventos disparados pelo controle antes de serem manipulados pelo contêiner do controle.
ON_PROPNOTIFY Define um manipulador para lidar com notificações de propriedade de um controle OLE.
ON_PROPNOTIFY_RANGE Define um manipulador para lidar com notificações de propriedade de um conjunto de controles OLE.
ON_PROPNOTIFY_REFLECT Recebe notificações de propriedade enviadas pelo controle antes de serem manipuladas pelo contêiner do controle.

BEGIN_EVENTSINK_MAP

Inicia a definição do mapa do coletor de eventos.

BEGIN_EVENTSINK_MAP(theClass, baseClass)

Parâmetros

theClass
Especifica o nome da classe de controle cujo mapa de coletor de eventos é esse.

baseClass
Especifica o nome da classe base de theClass.

Comentários

No arquivo de implementação (.cpp) que define as funções de membro para sua classe, inicie o mapa do coletor de eventos com a macro BEGIN_EVENTSINK_MAP, adicione entradas de macro para cada evento a ser notificado e conclua o mapa do coletor de eventos com a macro END_EVENTSINK_MAP.

Para obter mais informações sobre mapas do coletor de eventos e contêineres de controle OLE, consulte o artigo Contêineres de controle ActiveX.

Requisitos

Cabeçalho: afxdisp.h

DECLARE_EVENTSINK_MAP

Um contêiner OLE pode fornecer um mapa do coletor de eventos para especificar os eventos dos quais seu contêiner será notificado.

DECLARE_EVENTSINK_MAP()

Comentários

Use a macro DECLARE_EVENTSINK_MAP no final da declaração de classe. Então, no arquivo .CPP que define as funções de membro para a classe, use a macro BEGIN_EVENTSINK_MAP, as entradas de macro para cada um dos eventos a serem notificados e a macro END_EVENTSINK_MAP para declarar o fim da lista de coletores de eventos.

Para obter mais informações sobre mapas do coletor de eventos, consulte o artigo Contêineres de controle ActiveX.

Requisitos

Cabeçalho: afxwin.h

END_EVENTSINK_MAP

Encerra a definição do mapa do coletor de eventos.

END_EVENTSINK_MAP()

Requisitos

Cabeçalho: afxdisp.h

ON_EVENT

Use a macro ON_EVENT para definir uma função de manipulador de eventos para um evento disparado por um controle OLE.

ON_EVENT(theClass, id, dispid, pfnHandler,  vtsParams)

Parâmetros

theClass
A classe à qual este mapa do coletor de eventos pertence.

id
A ID de controle do controle OLE.

dispid
A ID de expedição do evento acionado pelo controle.

pfnHandler
Ponteiro para uma função membro que manipula o evento. Essa função deve ter um tipo de retorno BOOL e tipos de parâmetro que correspondam aos parâmetros do evento (consulte vtsParams). A função deve retornar TRUE para indicar que o evento foi tratado; caso contrário, FALSE.

vtsParams
Uma sequência de constantes VTS_ que especifica os tipos dos parâmetros para o evento. Essas são as mesmas constantes usadas em entradas de mapa de expedição, como DISP_FUNCTION.

Comentários

O argumento vtsParams é uma lista de valores separados por espaço das constantes VTS_. Um ou mais desses valores separados por espaços (não vírgulas) especifica a lista de parâmetros da função. Por exemplo:

VTS_I2 VTS_BOOL

especifica uma lista que contém um inteiro curto seguido por um BOOL.

Para obter uma lista das constantes VTS_, consulte EVENT_CUSTOM.

Requisitos

Cabeçalho: afxdisp.h

ON_EVENT_RANGE

Use a macro ON_EVENT_RANGE para definir uma função de manipulador de eventos para um evento disparado por qualquer controle OLE que tenha uma ID de controle dentro de um intervalo contíguo de IDs.

ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler,  vtsParams)

Parâmetros

theClass
A classe à qual este mapa do coletor de eventos pertence.

idFirst
A ID de controle do primeiro controle OLE no intervalo.

idLast
A ID de controle do último controle OLE no intervalo.

dispid
A ID de expedição do evento acionado pelo controle.

pfnHandler
Ponteiro para uma função membro que manipula o evento. Essa função deve ter um tipo de retorno BOOL, um primeiro parâmetro do tipo UINT (para a ID de controle) e tipos de parâmetros adicionais que correspondem aos parâmetros do evento (consulte vtsParams). A função deve retornar TRUE para indicar que o evento foi tratado; caso contrário, FALSE.

vtsParams
Uma sequência de constantes VTS_ que especifica os tipos dos parâmetros para o evento. A primeira constante deve ser do tipo VTS_I4, para a ID de controle. Essas são as mesmas constantes usadas em entradas de mapa de expedição, como DISP_FUNCTION.

Comentários

O argumento vtsParams é uma lista de valores separados por espaço das constantes VTS_. Um ou mais desses valores separados por espaços (não vírgulas) especifica a lista de parâmetros da função. Por exemplo:

VTS_I2 VTS_BOOL

especifica uma lista que contém um inteiro curto seguido por um BOOL.

Para obter uma lista das constantes VTS_, consulte EVENT_CUSTOM.

Exemplo

O exemplo a seguir demonstra um manipulador de eventos, para o evento MouseDown, implementado para três controles (IDC_MYCTRL1 até IDC_MYCTRL3). A função do manipulador de eventos, OnRangeMouseDown, é declarada no arquivo de cabeçalho da classe de diálogo (CMyDlg) como:

BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
   long x, long y);

O código a seguir é definido no arquivo de implementação da classe de diálogo.

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
   ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
      VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()

Requisitos

Cabeçalho: afxdisp.h

ON_EVENT_REFLECT

A macro ON_EVENT_REFLECT, quando usada no mapa do coletor de eventos da classe wrapper de um controle OLE, recebe eventos disparados pelo controle antes de serem manipulados pelo contêiner do controle.

ON_EVENT_REFLECT(theClass,  dispid, pfnHandler,  vtsParams)

Parâmetros

theClass
A classe à qual este mapa do coletor de eventos pertence.

dispid
A ID de expedição do evento acionado pelo controle.

pfnHandler
Ponteiro para uma função membro que manipula o evento. Essa função deve ter um tipo de retorno BOOL e tipos de parâmetro que correspondam aos parâmetros do evento (consulte vtsParams). A função deve retornar TRUE para indicar que o evento foi tratado; caso contrário, FALSE.

vtsParams
Uma sequência de constantes VTS_ que especifica os tipos dos parâmetros para o evento. Essas são as mesmas constantes usadas em entradas de mapa de expedição, como DISP_FUNCTION.

Comentários

O argumento vtsParams é uma lista de valores separados por espaço das constantes VTS_.

Um ou mais desses valores separados por espaços (não vírgulas) especifica a lista de parâmetros da função. Por exemplo:

VTS_I2 VTS_BOOL

especifica uma lista que contém um inteiro curto seguido por um BOOL.

Para obter uma lista das constantes VTS_, consulte EVENT_CUSTOM.

Requisitos

Cabeçalho: afxdisp.h

ON_PROPNOTIFY

Use a macro ON_PROPNOTIFY para definir uma entrada de mapa do coletor de eventos para lidar com notificações de propriedade de um controle OLE.

ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)

Parâmetros

theClass
A classe à qual este mapa do coletor de eventos pertence.

id
A ID de controle do controle OLE.

dispid
A ID de expedição da propriedade envolvida na notificação.

pfnRequest
Ponteiro para uma função membro que manipula a notificação OnRequestEdit dessa propriedade. Essa função deve ter um tipo de retorno BOOL e um parâmetro BOOL*. Essa função deve definir o parâmetro como TRUE para permitir que a propriedade seja alterada e FALSE seja não permitir. A função deve retornar TRUE para indicar que a notificação foi tratada; caso contrário, FALSE.

pfnChanged
Ponteiro para uma função membro que manipula a notificação OnChanged dessa propriedade. A função deve ter um tipo de retorno BOOL e um parâmetro UINT. A função deve retornar TRUE para indicar que a notificação foi tratada; caso contrário, FALSE.

Comentários

O argumento vtsParams é uma lista de valores separados por espaço das constantes VTS_. Um ou mais desses valores separados por espaços (não vírgulas) especifica a lista de parâmetros da função. Por exemplo:

VTS_I2 VTS_BOOL

especifica uma lista que contém um inteiro curto seguido por um BOOL.

Para obter uma lista das constantes VTS_, consulte EVENT_CUSTOM.

ON_PROPNOTIFY_RANGE

Use a macro ON_PROPNOTIFY_RANGE para definir uma entrada de mapa do coletor de eventos para lidar com notificações de propriedade de qualquer controle OLE que tenha uma ID de controle dentro de um intervalo contíguo de IDs.

ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)

Parâmetros

theClass
A classe à qual este mapa do coletor de eventos pertence.

idFirst
A ID de controle do primeiro controle OLE no intervalo.

idLast
A ID de controle do último controle OLE no intervalo.

dispid
A ID de expedição da propriedade envolvida na notificação.

pfnRequest
Ponteiro para uma função membro que manipula a notificação OnRequestEdit dessa propriedade. Essa função deve ter um tipo de retorno BOOL e parâmetros UINT e BOOL*. A função deve definir o parâmetro como TRUE para permitir que a propriedade seja alterada e FALSE seja não permitir. A função deve retornar TRUE para indicar que a notificação foi tratada; caso contrário, FALSE.

pfnChanged
Ponteiro para uma função membro que manipula a notificação OnChanged dessa propriedade. A função deve ter um tipo de retorno BOOL e um parâmetro UINT. A função deve retornar TRUE para indicar que a notificação foi tratada; caso contrário, FALSE.

Requisitos

Cabeçalho: afxdisp.h

ON_PROPNOTIFY_REFLECT

A macro ON_PROPNOTIFY_REFLECT, quando usada no mapa do coletor de eventos da classe wrapper de um controle OLE, recebe notificações de propriedade enviadas pelo controle antes de serem manipuladas pelo contêiner do controle.

ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)

Parâmetros

theClass
A classe à qual este mapa do coletor de eventos pertence.

dispid
A ID de expedição da propriedade envolvida na notificação.

pfnRequest
Ponteiro para uma função membro que manipula a notificação OnRequestEdit dessa propriedade. Essa função deve ter um tipo de retorno BOOL e um parâmetro BOOL*. Essa função deve definir o parâmetro como TRUE para permitir que a propriedade seja alterada e FALSE seja não permitir. A função deve retornar TRUE para indicar que a notificação foi tratada; caso contrário, FALSE.

pfnChanged
Ponteiro para uma função membro que manipula a notificação OnChanged dessa propriedade. A função deve ter um tipo de retorno BOOL e nenhum parâmetro. A função deve retornar TRUE para indicar que a notificação foi tratada; caso contrário, FALSE.

Requisitos

Cabeçalho: afxdisp.h

Confira também

Macros e Globais