Controles de ActiveX MFC: Adicionando métodos personalizado
Métodos personalizados diferem dos métodos de ações que eles já não são implementados por COleControl.Você deve fornecer a implementação de cada método personalizado que você adicionar ao seu controle.
Um usuário de controle de ActiveX pode chamar um método personalizado a qualquer momento para executar ações específicas de controle.É a entrada de mapa de expedição para métodos personalizados do formulário DISP_FUNCTION.
Adicionando um método personalizado com o Assistente para o método adicionar
O procedimento a seguir demonstra adicionando o 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.Este 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 de método de PtInCircle e parâmetros.
Observação |
---|
Este exemplo usa o InCircle função do artigo eventos.Para obter mais informações sobre esta função, consulte o artigo controles de ActiveX de MFC: adicionando eventos personalizados a um controle ActiveX. |
Para adicionar o método personalizado PtInCircle usando o Assistente para Adicionar método
Carregar projeto do controle.
No modo de exibição de classe, expanda o nó da biblioteca do seu controle.
Botão direito do mouse no nó de interface para o seu controle (o segundo nó do nó biblioteca) para abrir o menu de atalho.
No menu de atalho, clique em Add e clique em Adicionar método.
Isso abre o Assistente para Adicionar método.
No Nome do método , digite PtInCircle.
No Nome interno caixa, digite o nome de função interna do método ou usar o valor padrão (neste caso, PtInCircle).
No Tipo de retorno , clique VARIANT_BOOL para o tipo de retorno do método.
Usando o O tipo de parâmetro e Nome do parâmetro controles, adicionar um parâmetro chamado xCoord (tipo OLE_XPOS_PIXELS).
Usando o O tipo de parâmetro e Nome do parâmetro controles, adicionar um parâmetro chamado yCoord (tipo OLE_YPOS_PIXELS).
Clique em Concluir.
Adicionar método Assistente alterações para métodos personalizados
Quando você adiciona um método personalizado, o Assistente para Adicionar método faz algumas alterações para o cabeçalho de classe de controle (.H) e implementação (.Arquivos CPP).A seguinte linha é adicionada à declaração do mapa despacho no cabeçalho de 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 despacho chamado PtInCircle.Esta função pode ser chamada pelo usuário controle usando o nome externo PtInCircle.
A seguinte linha é adicionada ao controle.Arquivo IDL:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Esta linha atribui o método PtInCircle um número de identificação específico, a posição do método na lista de métodos e propriedades da 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 seguinte linha, localizado na implementação (.Arquivo CPP) da classe control, é adicionada ao mapa de despacho do controle:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
O DISP_FUNCTION macro mapeia o método PtInCircle para função de manipulador do controle, PtInCircle, declara o tipo de retorno para ser VARIANT_BOOLe declara dois parâmetros de tipo VTS_XPOS_PIXELS e VTS_YPOSPIXELS ser passados para PtInCircle.
Finalmente, o Assistente para Adicionar método adiciona a função de stub CSampleCtrl::PtInCircle na parte inferior da implementação do controle (.Arquivo CPP).Para PtInCircle para funcionar como mencionado anteriormente, ele 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
Modo de exibição e ícones de navegador do objeto de classe