Controles ActiveX MFC: adicionando eventos de estoque a um controle ActiveX
Os eventos de ações diferem dos eventos personalizados, pois são disparados automaticamente pela classe COleControl. COleControl
contém funções de membro predefinidas que disparam eventos resultantes de ações comuns. Algumas ações comuns implementadas por COleControl
incluem cliques únicos e duplos no controle, eventos de teclado e alterações no estado dos botões do mouse. As entradas do mapa de eventos para eventos de ações sempre são precedidas pelo prefixo EVENT_STOCK.
Eventos de estoque compatíveis com o Assistente para Adicionar Evento
A classe COleControl
oferece dez eventos de ações, listados na tabela a seguir. Você pode especificar os eventos desejados no seu controle usando o Assistente para Adicionar Evento.
Eventos de estoque
Evento | Função de acionamento | Comentários |
---|---|---|
Clique | void FireClick( ) | Acionado quando o controle captura o mouse, qualquer mensagem BUTTONUP (esquerda, meio ou direita) é recebida e o botão é liberado sobre o controle. Os eventos MouseDown e MouseUp de estoque ocorrem antes desse evento. Entrada do mapa de eventos: EVENT_STOCK_CLICK( ) |
DblClick | void FireDblClick( ) | Semelhante a Clicar, mas acionado quando uma mensagem BUTTONDBLCLK é recebida. Entrada do mapa de eventos: EVENT_STOCK_DBLCLICK( ) |
Erro | void FireError( SCODEscode, LPCSTRlpszDescription , UINTnHelpID = 0 ) |
Acionado quando ocorre um erro no controle ActiveX fora do escopo de uma chamada de método ou acesso à propriedade. Entrada do mapa de eventos: EVENT_STOCK_ERROREVENT( ) |
KeyDown | void FireKeyDown( shortnChar , shortnShiftState ) |
Acionado quando uma mensagem WM_SYSKEYDOWN ou WM_KEYDOWN é recebida.Entrada do mapa de eventos: EVENT_STOCK_KEYDOWN( ) |
KeyPress | void FireKeyPress( short*pnChar ) |
Acionado quando uma mensagem WM_CHAR é recebida.Entrada do mapa de eventos: EVENT_STOCK_KEYPRESS( ) |
KeyUp | void FireKeyUp( shortnChar , shortnShiftState ) |
Acionado quando uma mensagem WM_SYSKEYUP ou WM_KEYUP é recebida.Entrada do mapa de eventos: EVENT_STOCK_KEYUP( ) |
MouseDown | void FireMouseDown( shortnButton , shortnShiftState , floatx, floaty) |
Acionado se algum BUTTONDOWN (esquerda, meio ou direita) for recebido. O mouse é capturado imediatamente antes que esse evento seja acionado. Entrada do mapa de eventos: EVENT_STOCK_MOUSEDOWN( ) |
MouseMove | void FireMouseMove( shortnButton , shortnShiftState , floatx, floaty) |
Disparado quando uma mensagem WM_MOUSEMOVE é recebida. Entrada do mapa de eventos: EVENT_STOCK_MOUSEMOVE( ) |
MouseUp | void FireMouseUp( shortnButton , shortnShiftState , floatx, floaty) |
Acionado se algum BUTTONUP (esquerda, meio ou direita) for recebido. A captura do mouse é liberada antes que esse evento seja acionado. Entrada do mapa de eventos: EVENT_STOCK_MOUSEUP( ) |
ReadyStateChange | void FireReadyStateChange( ) | Acionado quando um controle faz a transição para o próximo estado pronto devido à quantidade de dados recebidos. Entrada do mapa de eventos: EVENT_STOCK_READYSTATECHANGE( ) |
Adicionar um evento de estoque usando o Assistente para Adicionar Evento
Adicionar eventos de ações requer menos trabalho do que adicionar eventos personalizados porque o disparo do evento real é tratado automaticamente pela classe base, COleControl
. O procedimento a seguir adiciona um evento de estoque a um controle que foi desenvolvido usando o Assistente de Controle ActiveX do MFC. O evento, chamado KeyPress, é acionado quando uma tecla é pressionada e o controle está ativo. Esse procedimento também pode ser usado para adicionar outros eventos de ações. Substitua o nome do evento de estoque selecionado por KeyPress.
Para adicionar o evento de ações KeyPress usando o Assistente para Adicionar Evento
Carregue o projeto do controle.
No Modo de Exibição de Classe, clique com o botão direito do mouse na classe de controle ActiveX para abrir o menu de atalho.
No menu de atalho, clique em Adicionar e em Adicionar Evento.
Isso abrirá o assistente Adicionar Evento.
Na lista suspensa Nome do evento, selecione
KeyPress
.Clique em Concluir.
Adicionar alterações do Assistente de Evento para Eventos de Ações
Como os eventos de estoque são tratados pela classe base do controle, o Assistente para Adicionar Evento não altera a declaração de classe de forma alguma. Ele adiciona o evento ao mapa de eventos do controle e faz uma entrada em seu arquivo .IDL. A linha a seguir é adicionada ao mapa de eventos de controle, localizado no arquivo de implementação da classe de controle (. CPP):
EVENT_STOCK_KEYPRESS()
Adicionar esse código aciona um evento KeyPress quando uma mensagem WM_CHAR é recebida e o controle está ativo. O evento KeyPress pode ser acionado outras vezes chamando sua função de disparo (por exemplo, FireKeyPress
) de dentro do código de controle.
O Assistente para Adicionar Evento adiciona a seguinte linha de código ao controle arquivo .IDL:
[id(DISPID_KEYPRESS)] void KeyPress(SHORT* KeyAscii);
Essa linha associa o evento KeyPress à sua ID de expedição padrão e permite que o contêiner antecipe o evento KeyPress.
Confira também
Controles ActiveX do MFC
Controles ActiveX do MFC: métodos
Classe COleControl