Compartilhar via


Eventos de controle (COM)

Além de fornecer propriedades e métodos, um controle também fornece interfaces de saída para notificar seu cliente de eventos. O cliente deve dar suporte ao tratamento desses eventos. Consulte Eventos em COM e objetos conectáveis para obter mais informações sobre como os objetos conectáveis funcionam.

Um controle pode dar suporte a diferentes interfaces de saída para diferentes finalidades. Todas as interfaces de saída são marcadas como interfaces de origem nas informações de tipo do controle, mas apenas uma é marcada como padrão para indicar que é a interface de saída primária.

Um contêiner pode dar suporte a uma ou mais das interfaces de saída definidas por um controle. O controle deve estar preparado para lidar com contêineres que fornecem suporte apenas para algumas de suas interfaces de saída.

Os controles dão suporte a quatro tipos de eventos:

  • Solicitar eventos. Um controle solicita permissão de seu cliente para fazer algo chamando um método na interface de saída, disparando assim um evento de solicitação. O cliente sinaliza o controle por meio de um parâmetro booliano e externo no método chamado pelo controle. Assim, o cliente pode impedir que o controle execute a ação.
  • Antes dos eventos. Um controle notifica seu chapéu de cliente de que ele fará algo chamando um método na interface de saída, disparando assim um evento anterior. O cliente não tem a oportunidade de impedir a ação, mas pode tomar todas as etapas necessárias, considerando a ação que está prestes a ocorrer.
  • Após eventos. Um controle notifica seu cliente de que ele acabou de fazer algo chamando um método na interface de saída, disparando assim um evento após. Novamente, o cliente não pode cancelar essa ação, mas pode tomar as etapas necessárias dada a ação que ocorreu.
  • Faça eventos. Um controle dispara um evento do para permitir que seu cliente substitua a ação do controle e forneça algumas ações alternativas ou complementares. Normalmente, o método que um controle chama para um evento do tem uma série de parâmetros para negociar com o cliente sobre as ações que ocorrerão.

Os dispids a seguir são definidos para eventos padrão que os controles podem dar suporte: Clique, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp e Error. Todos esses eventos padrão têm valores DISPID negativos, indicando seu status padrão.

O método IOleControl::FreezeEvents, quando chamado com TRUE, informa a um controle se o contêiner se incomodará em manipular eventos do controle até que FreezeEvents seja novamente chamado com FALSE . Durante esse tempo, o controle não pode depender do contêiner realmente manipulando eventos. Se um evento precisar ser tratado, o controle deverá enfileirar o evento para acioná-lo quando FreezeEvents for chamado com false.

controles ActiveX