Compartilhar via


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çãoObservaçã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

  1. Carregar projeto do controle.

  2. No modo de exibição de classe, expanda o nó da biblioteca do seu controle.

  3. 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.

  4. No menu de atalho, clique em Add e clique em Adicionar método.

    Isso abre o Assistente para Adicionar método.

  5. No Nome do método , digite PtInCircle.

  6. No Nome interno caixa, digite o nome de função interna do método ou usar o valor padrão (neste caso, PtInCircle).

  7. No Tipo de retorno , clique VARIANT_BOOL para o tipo de retorno do método.

  8. Usando o O tipo de parâmetro e Nome do parâmetro controles, adicionar um parâmetro chamado xCoord (tipo OLE_XPOS_PIXELS).

  9. Usando o O tipo de parâmetro e Nome do parâmetro controles, adicionar um parâmetro chamado yCoord (tipo OLE_YPOS_PIXELS).

  10. 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

Conceitos

Controles de ActiveX do MFC