Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os métodos personalizados diferem dos métodos de estoque, pois eles ainda não foram implementados por COleControl. Você deve fornecer a implementação para cada método personalizado adicionado ao seu controle.
Importante
O ActiveX é uma tecnologia herdada que não deve ser usada para o novo desenvolvimento. Para obter mais informações sobre tecnologias modernas que substituem o ActiveX, consulte Controles ActiveX.
Um usuário de controle ActiveX pode chamar um método personalizado a qualquer momento para executar ações específicas de controle. A entrada do mapa de expedição para métodos personalizados é do formulário DISP_FUNCTION.
Adicionar um método personalizado com o Assistente para Adicionar Método
O procedimento a seguir demonstra a adição do método personalizado PtInCircle ao código esqueleto de um controle ActiveX. PtInCircle determina se as coordenadas passadas para o controle estão dentro ou fora do círculo. Esse mesmo procedimento também pode ser usado para adicionar outros métodos personalizados. Substitua o nome do método personalizado e seus parâmetros para o nome e os parâmetros do método PtInCircle.
Observação
Este exemplo usa a InCircle função do artigo Eventos. Para obter mais informações sobre essa função, consulte o artigo Controles ActiveX do MFC: adicionando eventos personalizados a um controle ActiveX.
Para adicionar o método personalizado PtInCircle usando o Assistente para Adicionar Método
Carregue o projeto do controle.
No Modo de Exibição de Classe, expanda o nó de biblioteca do controle.
Clique com o botão direito do mouse no nó de interface do seu controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.
No menu de atalho, clique em Adicionar e clique em Adicionar Método.
Isso abre o Assistente para Adicionar Método.
Na caixa Nome do Método , digite PtInCircle.
Na caixa Nome Interno , digite o nome da função interna do método ou use o valor padrão (nesse caso, PtInCircle).
Na caixa Tipo de Retorno , clique em VARIANT_BOOL para o tipo de retorno do método.
Usando os controles Nome do Parâmetro e Tipo de Parâmetro , adicione um parâmetro chamado xCoord (tipo OLE_XPOS_PIXELS).
Usando os controles Tipo de Parâmetro e Nome do Parâmetro , adicione um parâmetro chamado yCoord (tipo OLE_YPOS_PIXELS).
Clique em Concluir.
Adicionar alterações do assistente de método para métodos personalizados
Quando você adiciona um método personalizado, o Assistente para Adicionar Método faz algumas alterações no cabeçalho da classe de controle (. H) e implementação (. Arquivos CPP). A linha a seguir é adicionada à declaração de mapa de expedição no cabeçalho da classe de controle (. H) arquivo:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Esse código declara um manipulador de método de expedição chamado PtInCircle. Essa função pode ser chamada pelo usuário de controle usando o nome PtInCircleexterno.
A linha a seguir é adicionada ao controle. Arquivo IDL:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Essa linha atribui ao PtInCircle método um número de ID específico, a posição do método na lista de propriedades e métodos do Assistente para Adicionar Método. Como o Assistente para Adicionar Método foi usado para adicionar o método personalizado, a entrada para ele foi adicionada automaticamente ao projeto. Arquivo IDL.
Além disso, a linha a seguir, localizada na implementação (. O arquivo CPP) da classe de controle é adicionado ao mapa de expedição do controle:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
A macro DISP_FUNCTION mapeia o método PtInCircle para a função de manipulador do controle, PtInCircledeclara o tipo de retorno como VARIANT_BOOL e declara dois parâmetros do tipo VTS_XPOS_PIXELS e VTS_YPOSPIXELS a serem passados para PtInCircle.
Por fim, o Assistente para Adicionar Método adiciona a função CSampleCtrl::PtInCircle stub à parte inferior da implementação do controle (. Arquivo CPP). Para PtInCircle funcionar como indicado anteriormente, ele deve ser modificado da seguinte maneira:
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
Controles MFC ActiveX
Ícones do navegador de objetos e exibição de classe