Compartilhar via


Controles ActiveX do MFC: adicionando métodos personalizados

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentação.

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 despacho para métodos personalizados é da forma DISP_FUNCTION.

Adicionar um Método Personalizado com o Assistente de 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 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 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 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 abrirá o Assistente para adicionar evento.

  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 promove alterações nos arquivos de cabeçalho da classe de controle (.H) e de implementação (.CPP). A seguinte linha é adicionada à declaração do mapa de despacho no arquivo de 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 dispatch chamado PtInCircle. Essa função pode ser chamada pelo usuário de controle usando o nome PtInCircleexterno.

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 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 arquivo .IDL do projeto.

Além disso, a seguinte linha, localizada no arquivo de implementação (.CPP) da classe de controle, é adicionada ao mapa de despacho 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 stub CSampleCtrl::PtInCircle à parte inferior do arquivo de implementação do controle (.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 de exibição de classe e navegador de objetos