Controles ActiveX MFC: adicionando eventos de estoque a um controle ActiveX
Os eventos de estoque são diferentes dos eventos personalizados que são acionados automaticamente pela classe COleControl. COleControl contém as funções de membro predefinidas que acionam eventos que resultam de ações comuns. Algumas ações comuns implementadas por COleControl incluem único e clique duas vezes no controle, os eventos de teclado, e as alterações no estado de botão do mouse em. As entradas de mapa dos eventos de estoque sempre são precedidas pelo prefixo de EVENT_STOCK .
Eventos de estoque suportados pelo assistente de evento adicionar
A classe de COleControl fornece dez eventos de estoque, listados na tabela a seguir. Você pode especificar os eventos que você deseja em seu controle usando Adicionar o assistente de evento.
Eventos de estoque
Evento |
Acionando a função |
Comentários |
---|---|---|
Clique em |
FireClick nulo () |
Acionado quando o controle captura o mouse, qualquer mensagem de BUTTONUP (à esquerda, intermediário, ou direito) é recebida, e o botão será liberado sobre o controle. Os eventos de estoque de MouseDown e de MouseUp ocorrem antes do evento. Entrada do mapa de evento: EVENT_STOCK_CLICK( ) |
DblClick |
FireDblClick nulo () |
Clique em semelhante mas acionado quando uma mensagem de BUTTONDBLCLK é recebida. Entrada do mapa de evento: EVENT_STOCK_DBLCLICK( ) |
Erro |
scode, LPCSTR lpszDescription, UINT nHelpID = 0 )devoid FireError( SCODE |
Acionado quando ocorre um erro no controle ActiveX fora do escopo de uma chamada do método ou de um acesso da propriedade. Entrada do mapa de evento: EVENT_STOCK_ERROREVENT( ) |
KeyDown |
void FireKeyDown( short nChar, short nShiftState ) |
Acionado quando uma mensagem de WM_SYSKEYDOWN ou de WM_KEYDOWN é recebida. Entrada do mapa de evento: EVENT_STOCK_KEYDOWN( ) |
KeyPress |
void FireKeyPress( short* pnChar ) |
Acionado quando uma mensagem de WM_CHAR é recebida. Entrada do mapa de evento: EVENT_STOCK_KEYPRESS( ) |
KeyUp |
void FireKeyUp( short nChar, short nShiftState ) |
Acionado quando uma mensagem de WM_SYSKEYUP ou de WM_KEYUP é recebida. Entrada do mapa de evento: EVENT_STOCK_KEYUP( ) |
MouseDown |
void FireMouseDown( short nButton, short nShiftState, float xy ), float |
Acionado se qualquer BUTTONDOWN (deixado, intermediário, ou direito) é recebido. O mouse for detectada imediatamente antes desse evento é acionado. Entrada do mapa de evento: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove |
void FireMouseMove( short nButton, short nShiftState, float xy ), float |
Acionado quando uma mensagem de WM_MOUSEMOVE é recebida. Entrada do mapa de evento: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp |
void FireMouseUp( short nButton, short nShiftState, float xy ), float |
Acionado se qualquer BUTTONUP (deixado, intermediário, ou direito) é recebido. A captura do mouse é liberada antes que este evento será acionado. Entrada do mapa de evento: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange |
FireReadyStateChange nulo () |
Acionado quando um controle faz a transição para o estado pronto seguir devido à quantidade de dados recebidos. Entrada do mapa de evento: EVENT_STOCK_READYSTATECHANGE( ) |
Adicionando um evento de estoque usando o assistente de evento adicionar
Adicionar os eventos de estoque requer que o trabalho do adicionando eventos personalizados como o acionamento de eventos reais é tratado automaticamente pela classe base, COleControl. O procedimento a seguir adiciona um evento de estoque a um controle que foi desenvolvido usando Assistente de controle ActiveX de MFC. O evento, KeyPress chamado, é acionado quando uma chave é pressionada e o controle está ativa. Esse procedimento também pode ser usado para adicionar outros eventos de estoque. Substitua o nome de estoque selecionado de evento para KeyPress.
Para adicionar o KeyPress armazena o evento usando o assistente de evento adicionar
Carregar o projeto do controle.
Na exibição da classe, clique com o botão direito do mouse na sua classe do controle ActiveX para abrir o menu de atalho.
No menu de atalho, clique Adicionar e clique em Adicionar Evento.
Isso abre o assistente de evento a ser adicionado.
Na lista suspensa de Nome do Evento , KeyPressselecione.
Clique em Concluir.
Adicionar alterações do assistente dos eventos de estoque
Como os eventos de estoque são tratados pela classe base de controle, o assistente de evento adicionar não altera sua declaração de classe de nenhuma forma. Adiciona o evento no mapa do evento de controle e faz uma entrada no .IDL arquivamento. A seguinte linha é adicionada ao mapa do evento de controle, localizado no arquivo de implementação da classe de controle (.CPP):
EVENT_STOCK_KEYPRESS()
Adicionando esse código dispara um evento de KeyPress quando uma mensagem de WM_CHAR é recebida e o controle está ativa. O evento de KeyPress pode ser acionado em outras vezes chamando a função de acionamento (por exemplo, FireKeyPress) dentro do código de controle.
O assistente de evento adicionar adiciona a seguinte linha de código em um arquivo de .IDL de controle:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Essa linha associa o evento de KeyPress com sua ID de distribuição padrão e permite que o contêiner antecipe o evento de KeyPress.