Compartilhar via


Controles ActiveX do MFC: adicionando métodos personalizados

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

  1. Carregue o projeto do controle.

  2. No Modo de Exibição de Classe, expanda o nó de biblioteca do controle.

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

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

    Isso abre o Assistente para Adicionar Método.

  5. Na caixa Nome do Método , digite PtInCircle.

  6. Na caixa Nome Interno , digite o nome da função interna do método ou use o valor padrão (nesse caso, PtInCircle).

  7. Na caixa Tipo de Retorno , clique em VARIANT_BOOL para o tipo de retorno do método.

  8. Usando os controles Nome do Parâmetro e Tipo de Parâmetro , adicione um parâmetro chamado xCoord (tipo OLE_XPOS_PIXELS).

  9. Usando os controles Tipo de Parâmetro e Nome do Parâmetro , adicione um parâmetro chamado yCoord (tipo OLE_YPOS_PIXELS).

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