Controles ActiveX MFC: adicionando métodos personalizados
Os métodos personalizados são diferentes dos métodos de estoque que não são implementados já por COleControl. Você deve fornecer uma implementação para cada método personalizado que você adiciona ao controle.
Um usuário do controle ActiveX pode chamar um método personalizado a qualquer momento para executar ações controle- específicas. A entrada do mapa de distribuição para métodos personalizados é do formato DISP_FUNCTION.
Adicionando um método personalizado com o assistente de método add
O procedimento a seguir demonstra como adicionar o método personalizado PtInCircle a um código de esqueleto de controle ActiveX. PtInCircle determina se as coordenadas são transmitidas ao controle dentro ou fora do círculo. Esse mesmo procedimento também pode ser usado para adicionar outros métodos personalizados. Substituir seu nome personalizado do método e seus parâmetros para o nome e os parâmetros do método de PtInCircle.
Dica
Este exemplo usa a função de InCircle de eventos do artigo.Para obter mais informações sobre essa função, consulte o artigo Controles ActiveX MFC: Adicionando eventos personalizados a um controle ActiveX.
Para adicionar o método personalizado de PtInCircle usando o assistente de método add
Carregar o projeto do controle.
Na exibição da classe, expanda o nó da biblioteca do controle.
Clique com o botão direito do mouse no nó da interface para o controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.
No menu de atalho, clique Adicionar e clique em Adicionar método.
Isso abre o assistente do método ser adicionado.
Na caixa de Nome do Método , digite PtInCircle.
Na caixa de Nome interno , digite o nome da função interna do método ou use o valor padrão (nesse caso, PtInCircle).
Na caixa de Tipo de retorno , clique VARIANT_BOOL para o tipo de retorno do método.
Usando os controles de Tipo de parâmetro e de Nome do parâmetro , adicione um parâmetro denominado xCoord (tipo OLE_XPOS_PIXELS).
Usando os controles de Tipo de parâmetro e de Nome do parâmetro , adicione um parâmetro denominado yCoord (tipo OLE_YPOS_PIXELS).
Clique em Concluir.
Adicionar alterações do assistente do método para métodos personalizados
Quando você adiciona um método personalizado, o assistente do método adicionar fazer algumas alterações ao cabeçalho da classe de controle (. H) e arquivos de implementação (.CPP). A seguinte linha é adicionada à declaração do mapa de distribuição no cabeçalho da classe de controle (. H) arquivo:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Esse código a seguir declara um método chamado PtInCirclemanipulador de distribuição. Esta função pode ser chamada pelo usuário de controle que usa o nome externo PtInCircle.
A seguinte linha é adicionada ao arquivo de .IDL de controle:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Essa linha atribui ao método de um PtInCircle o número de identificação específico, a posição do método em métodos do assistente do método adicionar e as propriedades a seguir. Porque o assistente do método adicionar foi usado para adicionar o método personalizado, a entrada para o qual foi acrescentada automaticamente ao arquivo de .IDL do projeto.
Além disso, a seguinte linha, localizada no arquivo de implementação) (.CPP da classe de controle, é adicionada ao mapa de expedição de controle:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
A macro de DISP_FUNCTION mapeia o método PtInCircle à função de manipulador de controle, PtInCircle, declara o tipo de retorno para ser VARIANT_BOOL, e declaram dois parâmetros do tipo VTS_XPOS_PIXELS e VTS_YPOSPIXELS a serem transmitidos a PtInCircle.
Finalmente, o assistente do método adicionar adiciona a função CSampleCtrl::PtInCircle de stub para a parte inferior do arquivo de implementação de controle (.CPP). Para que PtInCircle funcione como indicado previamente, deve ser modificado como segue:
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}
Consulte também
Referência
Exibição de classe ícones do Pesquisador de Objetos