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