Compartilhar via


Os controles ActiveX MFC: Adicionando métodos personalizado

Métodos personalizados diferem dos métodos de ações de eles já não são implementados por COleControl. Você deve fornecer a implementação de cada método personalizado que adicionar ao seu controle.

Um usuário do controle ActiveX pode chamar um método personalizado a qualquer momento para executar ações específicas do controle.A entrada de MAP de despacho para métodos personalizados é do formulário DISP_FUNCTION.

Adicionando um método personalizado com o Assistente de método

O procedimento a seguir demonstra como adicionar 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 do método 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 Os controles ActiveX 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, expandir o nó de biblioteca do seu controle.

  3. clicar com o botão direito do mouse no nó de interface para o seu controle (o segundo nó do nó biblioteca) para em em aberto o menu de atalho.

  4. No menu de atalho, clicar Adicionar e, em seguida, clicar Método Add.

    Isso abre o Assistente para Adicionar método.

  5. No Nome do método box, type PtInCircle.

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

  7. No Tipo de retorno clicarVARIANT_BOOL para o tipo de retorno do método.

  8. Usando o Tipo de parâmetro and Nome de parâmetro controles, adicionar um parâmetro chamado xCoord (tipo OLE_XPOS_PIXELS).

  9. Usando o Tipo de parâmetro and Nome de parâmetro controles, adicionar um parâmetro chamado yCoord (tipo OLE_YPOS_PIXELS).

  10. Clique em Finish.

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 arquivos de implementação (.CPP).A seguinte linha é adicionada à declaração de MAP de expedição no arquivo de cabeçalho (.H) de classe de controle:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Esse código declara um manipulador de método de expedição denominado PtInCircle. Esta função pode ser chamada pelo usuário controle usando o nome externo PtInCircle.

A seguinte linha é adicionada ao arquivo .IDL do controle:

[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 ID específico, posição do método na lista de métodos e propriedades de 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 arquivo .IDL do projeto.

Além disso, a seguinte linha no arquivo de implementação (.CPP) da classe de controle, é adicionada ao MAP de despacho do controle:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

The 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 do tipo VTS_XPOS_PIXELS and VTS_YPOSPIXELS sejam passadas para PtInCircle.

Finalmente, o Assistente para Adicionar método adiciona a função de stub CSampleCtrl::PtInCircle para a parte inferior do arquivo de implementação (.CPP) do controle. For PtInCircle para funcionar sistema autônomo afirmado anteriormente, ele deve ser modificado da seguinte forma:

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

Conceitos

Controles do ActiveX MFC