Partilhar via


Controles ActiveX MFC: adicionando métodos personalizados

Os métodos personalizados diferem dos métodos de estoque por não serem ainda 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 novo desenvolvimento. Para mais informações sobre tecnologias modernas que substituem o ActiveX, confira Controles do ActiveX.

Um usuário do 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 tem a forma 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. O 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 e os parâmetros do seu método personalizado pelo nome e os parâmetros do método PtInCircle.

Observação

Este exemplo usa a função InCircle do artigo Eventos. Para mais informações sobre essa função, consulte o artigo Controles ActiveX MFC: adicionar 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 controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.

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

    Isso abrirá o Assistente para adicionar evento.

  5. Na caixa Nome de 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 Tipo de parâmetro e Nome do 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 de assistente de método para métodos personalizados

Quando você adiciona um método personalizado, o Assistente para adicionar método promove alterações nos arquivos de cabeçalho da classe de controle (.H) e de implementação (.CPP). A linha a seguir é adicionada à declaração do mapa de expedição no arquivo do cabeçalho da classe de controle (. H):

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 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);

Essa linha atribui ao método PtInCircle 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 arquivo .IDL do projeto.

Além disso, a linha a seguir, localizada no arquivo de implementação (.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 à 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 stub CSampleCtrl::PtInCircle à parte inferior do arquivo de implementação do controle (arquivo .CPP). Para que PtInCircle funcione conforme 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);
}

Confira também

Controles ActiveX do MFC
Ícones do Pesquisador de Objetos e do Modo de Exibição de Classe