Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os métodos personalizados diferem dos métodos de estoque porque ainda não foram implementados pela COleControl. Você deve fornecer a implementação para cada método personalizado que você adiciona ao seu controle.
Importante
ActiveX é uma tecnologia herdada que não deve ser usada para novos desenvolvimentos. 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 do controle. A entrada do mapa de despacho para métodos personalizados é do formato DISP_FUNCTION.
Adicionando um método personalizado com o Assistente de Adição de 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. 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 pelo nome e 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 MFC: Adicionando eventos personalizados a um controle ActiveX.
Para adicionar o método personalizado PtInCircle usando o Assistente para Adicionar Método
Carregue o projeto do controle.
Na Vista de Classe, expanda o nó da biblioteca do seu controle.
Clique com o botão direito do mouse no nó da interface do seu controle (o segundo nó do nó da biblioteca) para abrir o menu de atalho.
No menu de atalho, clique em Adicionar e, em seguida, clique em Adicionar método.
Abrir-se-á o Assistente para Adicionar Método.
Na caixa Nome do método , digite PtInCircle.
Na caixa Nome interno , digite o nome da função interna do método ou use o valor padrão (neste caso, PtInCircle).
Na caixa Tipo de retorno , clique em VARIANT_BOOL para o tipo de retorno do método.
Usando os controles Parameter Type e Parameter Name , adicione um parâmetro chamado xCoord (tipo OLE_XPOS_PIXELS).
Usando os controles Parameter Type e Parameter Name , adicione um parâmetro chamado yCoord (tipo OLE_YPOS_PIXELS).
Clique em Concluir.
Alterações do Assistente de Adição de Método para Métodos Personalizados
Quando se adiciona um método personalizado, o Assistente para Adicionar Método faz algumas alterações no cabeçalho da classe de controlo (.H) e implementação (.CPP). A linha a seguir é adicionada à declaração do mapa de despacho no cabeçalho da classe de controle (ficheiro .H):
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Este código declara um manipulador de método de despacho chamado PtInCircle. Esta função pode ser chamada pelo usuário de controle usando o nome PtInCircleexterno.
A seguinte linha é adicionada ao ficheiro .IDL do controlo:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Esta linha atribui ao PtInCircle método um número de ID específico, a posição do método na lista de métodos e propriedades 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 ficheiro .IDL do projeto.
Além disso, a seguinte linha, localizada na implementação (. CPP) da classe de controle, é adicionado 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 a ser VARIANT_BOOL e declara dois parâmetros do tipo VTS_XPOS_PIXELS e VTS_YPOSPIXELS a serem passados para PtInCircle.
Finalmente, o Assistente para Adicionar Método adiciona a função CSampleCtrl::PtInCircle stub à parte inferior da implementação do controle (. CPP). Para PtInCircle funcionar como indicado 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);
}
Ver também
Controles ActiveX MFC
Ícones da Visualização de Classe e do Navegador de Objetos