Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Sempre que um controlo deseja notificar o seu contentor de que alguma ação (determinada pelo programador do controlo) ocorreu (como um toque de tecla, clique do rato ou uma alteração no estado do controlo), chama uma função de disparo de eventos. Esta função notifica o contentor de controlo que alguma ação importante ocorreu ao disparar o evento relacionado.
A Microsoft Foundation Class Library oferece um modelo de programação otimizado para eventos de disparo. Neste modelo, os "mapas de eventos" são usados para designar quais funções ativam quais eventos para um determinado controlo. Os mapas de eventos contêm uma macro para cada evento. Por exemplo, um mapa de eventos que lança um evento clicar padrão pode ser assim:
BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()
A EVENT_STOCK_CLICK macro indica que o controlo irá disparar um evento de clique padrão sempre que detetar um clique do rato. Para uma lista mais detalhada de outros eventos de ações, consulte o artigo Controlos ActiveX: Eventos. Macros também estão disponíveis para indicar eventos personalizados.
Embora os macros de mapas de eventos sejam importantes, geralmente não os insere diretamente. Isto porque a janela de Propriedades (na Vista de Classes) cria automaticamente entradas de mapa de eventos nos seus ficheiros fonte quando a utiliza para associar funções de disparo de eventos a eventos. Sempre que quiseres editar ou adicionar uma entrada no mapa de eventos, podes usar a janela de Propriedades .
Para suportar mapas de eventos, o MFC fornece os seguintes macros:
Macros do Mapa de Eventos
Declaração e Demarcação do Mapa de Eventos
| Nome | Description |
|---|---|
| DECLARE_EVENT_MAP | Declara que um mapa de eventos será usado numa classe para mapear eventos para funções que disparam eventos (deve ser usado na declaração de classe). |
| BEGIN_EVENT_MAP | Inicia a definição de um mapa de eventos (deve ser usado na implementação da classe). |
| END_EVENT_MAP | Termina a definição de um mapa de eventos (deve ser usado na implementação da classe). |
Macros de Mapeamento de Eventos
| Nome | Description |
|---|---|
| EVENT_CUSTOM | Indica qual a função de disparo de evento que irá disparar o evento especificado. |
| EVENT_CUSTOM_ID | Indica qual a função de disparo de eventos que irá disparar o evento especificado, com um ID de despacho designado. |
Macros de Mapeamento de Mensagens
| Nome | Description |
|---|---|
| ON_OLEVERB | Indica um verbo personalizado tratado pelo controlo OLE. |
| ON_STDOLEVERB | Sobrepõe-se a um mapeamento verbal padrão do controlo OLE. |
DECLARE_EVENT_MAP
Cada COleControlclasse derivada no seu programa pode fornecer um mapa de eventos para especificar os eventos que o seu controlo irá disparar.
DECLARE_EVENT_MAP()
Observações
Usa a macro DECLARE_EVENT_MAP no final da tua declaração de aula. Depois, no ficheiro .cpp que define as funções membros da classe, use a macro BEGIN_EVENT_MAP, as entradas de macro de cada um dos eventos do controlo e a macro END_EVENT_MAP para declarar o fim da lista de eventos.
Para mais informações sobre mapas de eventos, consulte o artigo Controlos ActiveX: Eventos.
Requerimentos
Cabeçalho afxctl.h
BEGIN_EVENT_MAP
Começa a definição do seu mapa de eventos.
BEGIN_EVENT_MAP(theClass, baseClass)
Parâmetros
a Classe
Especifica o nome da classe de controlo cujo event map pertence.
Classe base
Especifica o nome da classe base da Classe.
Observações
No ficheiro de implementação (.cpp) que define as funções membros da sua classe, inicie o mapa de eventos com a macro BEGIN_EVENT_MAP, depois adicione entradas de macro para cada um dos seus eventos e complete o mapa de eventos com a macro END_EVENT_MAP.
Para mais informações sobre mapas de eventos e a macro BEGIN_EVENT_MAP, consulte o artigo Controlos ActiveX: Eventos.
Requerimentos
Cabeçalho afxctl.h
END_EVENT_MAP
Use o macro END_EVENT_MAP para terminar a definição do seu mapa de eventos.
END_EVENT_MAP()
Requerimentos
Cabeçalho afxctl.h
EVENT_CUSTOM
Define uma entrada de event map para um evento personalizado.
EVENT_CUSTOM(pszName, pfnFire, vtsParams)
Parâmetros
pszName
O nome do evento.
pfnFire
O nome da função de disparo de eventos.
vtsParams
Uma lista separada em espaço de uma ou mais constantes que especifica a lista de parâmetros da função.
Observações
O parâmetro vtsParams é uma lista separada do espaço dos valores das VTS_ constantes. Um ou mais destes valores, separados por espaços (não vírgulas), especifica a lista de parâmetros da função. Por exemplo:
VTS_COLOR VTS_FONT
especifica uma lista contendo um inteiro de 32 bits representando um valor de cor RGB, seguida de um ponteiro para a IFontDisp interface de um objeto fonte OLE.
As VTS_ constantes e os seus significados são os seguintes:
| Symbol | Tipo de parâmetro |
|---|---|
| VTS_I2 | short |
| VTS_I4 | long |
| VTS_R4 | float |
| VTS_R8 | double |
| VTS_COLOR | OLE_COLOR |
| VTS_CY | MOEDA |
| VTS_DATE | DATE |
| VTS_BSTR |
const
char* |
| VTS_DISPATCH | LPDISPATCH |
| VTS_FONT | IFontDispatch* |
| VTS_HANDLE | PEGA |
| VTS_SCODE | SCODE |
| VTS_BOOL | BOOL |
| VTS_VARIANT | const VARIANT* |
| VTS_PVARIANT | VARIANT* |
| VTS_UNKNOWN | LPUNKNOWN |
| VTS_OPTEXCLUSIVE | OLE_OPTEXCLUSIVE |
| VTS_PICTURE | IPictureDisp* |
| VTS_TRISTATE | OLE_TRISTATE |
| VTS_XPOS_PIXELS | OLE_XPOS_PIXELS |
| VTS_YPOS_PIXELS | OLE_YPOS_PIXELS |
| VTS_XSIZE_PIXELS | OLE_XSIZE_PIXELS |
| VTS_YSIZE_PIXELS | OLE_YSIZE_PIXELS |
| TS_XPOS_HIMETRIC | OLE_XPOS_HIMETRIC |
| VTS_YPOS_HIMETRIC | OLE_YPOS_HIMETRIC |
| VTS_XSIZE_HIMETRIC | OLE_XSIZE_HIMETRIC |
| VTS_YSIZE_HIMETRIC | OLE_YSIZE_HIMETRIC |
Observação
Foram definidas constantes variantes adicionais para todos os tipos de variantes, com exceção de VTS_FONT e VTS_PICTURE, que fornecem um ponteiro para a constante de dados variante. Estas constantes são nomeadas usando a VTS_Pconstantname convenção. Por exemplo, VTS_PCOLOR é um apontador para uma constante VTS_COLOR.
Requerimentos
Cabeçalho afxctl.h
EVENT_CUSTOM_ID
Define uma função de disparo de eventos para um evento personalizado pertencente ao ID de despacho especificado por dispid.
EVENT_CUSTOM_ID(
pszName,
dispid,
pfnFire,
vtsParams)
Parâmetros
pszName
O nome do evento.
dispid
O ID de despacho usado pelo controlo ao disparar o evento.
pfnFire
O nome da função de disparo de eventos.
vtsParams
Uma lista variável de parâmetros passada para o contentor de controlo quando o evento é lançado.
Observações
O argumento vtsParams é uma lista separada em espaço de valores das VTS_ constantes. Um ou mais destes valores, separados por espaços, e não por vírgulas, especificam a lista de parâmetros da função. Por exemplo:
VTS_COLOR VTS_FONT
especifica uma lista contendo um inteiro de 32 bits representando um valor de cor RGB, seguida de um ponteiro para a IFontDisp interface de um objeto fonte OLE.
Para uma lista das VTS_ constantes, veja EVENT_CUSTOM.
Requerimentos
Cabeçalho afxctl.h
ON_OLEVERB
Esta macro define uma entrada de mapa de mensagem que mapeia um verbo personalizado para uma função membro específica do seu controlo.
ON_OLEVERB(idsVerbName, memberFxn)
Parâmetros
idsVerbName
O ID de recurso da cadeia do nome do verbo.
membroFxn
A função chamada pela estrutura quando o verbo é invocado.
Observações
O editor de recursos pode ser usado para criar nomes de verbos personalizados que são adicionados à sua tabela de cadeias.
O protótipo de função para memberFxn é:
BOOL memberFxn(
LPMSG lpMsg,
HWND hWndParent,
LPCRECT lpRect);
Os valores dos parâmetros lpMsg, hWndParent e lpRect são retirados dos parâmetros correspondentes da IOleObject::DoVerb função membro.
Requerimentos
Cabeçalho afxole.h
ON_STDOLEVERB
Use esta macro para sobrepor o comportamento padrão de um verbo padrão.
ON_STDOLEVERB(iVerb, memberFxn)
Parâmetros
iVerb
O índice verbal padrão para o verbo a ser sobreposto.
membroFxn
A função chamada pela estrutura quando o verbo é invocado.
Observações
O índice verbal padrão é da forma OLEIVERB_, seguido de uma ação. OLEIVERB_SHOW, OLEIVERB_HIDE e OLEIVERB_UIACTIVATE são alguns exemplos de verbos padrão.
Ver ON_OLEVERB para uma descrição do protótipo da função a ser usado como parâmetro memberFxn .
Requerimentos
Cabeçalho afxole.h