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.
Um controle ActiveX é um componente de software reutilizável baseado no COM (Component Object Model) que suporta uma ampla variedade de funcionalidades OLE e pode ser personalizado para atender a muitas necessidades de software.
Importante
ActiveX é uma tecnologia herdada que não deve ser usada para novos desenvolvimentos. Para obter mais informações, consulte Controles ActiveX.
Os controles ActiveX são projetados para uso em contêineres de controle ActiveX comuns e na Internet, em páginas da World Wide Web. Você pode criar controles ActiveX com MFC, descrito aqui, ou com a Ative Template Library (ATL).
Um controle ActiveX pode desenhar-se em sua própria janela, responder a eventos (como cliques do mouse) e ser gerenciado por meio de uma interface que inclui propriedades e métodos semelhantes aos dos objetos de automação.
Esses controles podem ser desenvolvidos para muitos usos, como acesso a banco de dados, monitoramento de dados ou gráficos. Além de sua portabilidade, os controles ActiveX suportam recursos anteriormente não disponíveis para controles ActiveX, como compatibilidade com contêineres OLE existentes e a capacidade de integrar seus menus com os menus de contêiner OLE. Além disso, um controle ActiveX suporta totalmente a automação, que permite que o controle exponha propriedades de leitura\gravação e um conjunto de métodos que podem ser chamados pelo usuário de controle.
Você pode criar controles ActiveX sem janela e controles que só criam uma janela quando eles se tornam ativos. Os controles sem janela aceleram a exibição do seu aplicativo e tornam possível ter controles transparentes e não retangulares. Você também pode carregar propriedades de controle ActiveX de forma assíncrona.
Um controle ActiveX é implementado como um servidor em processo (normalmente um objeto pequeno) que pode ser usado em qualquer contêiner OLE. Observe que a funcionalidade completa de um controle ActiveX está disponível somente quando usado dentro de um contêiner OLE projetado para estar ciente de controles ActiveX. Consulte Portar controles ActiveX para outros aplicativos para obter uma lista de contêineres que oferecem suporte a controles ActiveX. Esse tipo de contêiner, doravante chamado de "contêiner de controle", pode operar um controle ActiveX usando as propriedades e métodos do controle e recebe notificações do controle ActiveX na forma de eventos. A figura a seguir demonstra essa interação.
Interação entre um contêiner de controle ActiveX e um controle ActiveX em janela
Para obter algumas informações recentes sobre como otimizar seus controles ActiveX, consulte Controles ActiveX MFC: otimização.
Para criar um controle ActiveX MFC, consulte Criar um projeto de controle ActiveX.
Para obter mais informações, consulte:
Componentes básicos de um controle ActiveX
Um controle ActiveX usa vários elementos programáticos para interagir eficientemente com um contêiner de controle e com o usuário. Estas são a classe COleControl, um conjunto de funções de disparo de eventos e um mapa de despacho.
Cada objeto de controle ActiveX que você desenvolve herda um poderoso conjunto de recursos de sua classe base MFC, COleControl. Esses recursos incluem ativação direta e lógica de automação.
COleControl pode fornecer ao objeto de controle a mesma funcionalidade que um objeto de janela MFC, além da capacidade de disparar eventos.
COleControl também pode fornecer controles sem janelas, que dependem de seu contêiner para obter ajuda com algumas das funcionalidades que uma janela fornece (captura do mouse, foco do teclado, rolagem), mas oferecem exibição muito mais rápida.
Como a classe de controlo deriva de COleControl, ela herda a capacidade de enviar, ou "disparar", mensagens chamadas de eventos para o contentor de controlo quando certas condições são atendidas. Esses eventos são usados para notificar o contêiner de controle quando algo importante acontece no controle. Você pode enviar informações adicionais sobre um evento para o contêiner de controle anexando parâmetros ao evento. Para obter mais informações sobre eventos de controle ActiveX, consulte o artigo Controles ActiveX MFC: Eventos.
O elemento final é um mapa de despacho, que é usado para expor um conjunto de funções (chamados métodos) e atributos (chamados propriedades) para o usuário de controle. As propriedades permitem que o contêiner de controle ou o usuário de controle manipule o controle de várias maneiras. O usuário pode alterar a aparência do controle, alterar certos valores do controle ou fazer solicitações do controle, como acessar uma parte específica de dados que o controle mantém. Essa interface é determinada pelo desenvolvedor de controle e é definida usando Class View. Para obter mais informações sobre métodos e propriedades de controle ActiveX, consulte os artigos Controles ActiveX MFC: Métodos e Propriedades.
Interação entre controles com Windows e contêineres de controle ActiveX
Quando um controle é usado dentro de um contêiner de controle, ele usa dois mecanismos para se comunicar: expõe propriedades e métodos e dispara eventos. A figura a seguir demonstra como esses dois mecanismos são implementados.
Comunicação entre um contêiner de controle ActiveX e um controle ActiveX
A figura anterior também ilustra como outras interfaces OLE (além de automação e eventos) são manipuladas por controles.
Toda a comunicação de um controle com o contêiner é realizada pela COleControl. Para lidar com algumas das solicitações do contêiner, COleControl chamará funções de membro que são implementadas na classe de controle. Todos os métodos e algumas propriedades são tratados desta forma. A classe do controle também pode iniciar a comunicação com o contêiner chamando funções de membro do COleControl. Os eventos são disparados desta maneira.
Estados ativos e inativos de um controle ActiveX
Um controle tem dois estados básicos: ativo e inativo. Tradicionalmente, estes estados distinguiam-se pelo facto de o controlo ter ou não uma janela. Um controle ativo tinha uma janela; um controlo inativo não o fez. Com a introdução da ativação sem janelas, essa distinção não é mais universal, mas ainda se aplica a muitos controles.
Quando um controle sem janela fica ativo, ele invoca a captura do mouse, o foco do teclado, a rolagem e outros serviços de janela de seu contêiner. Você também pode fornecer interação do mouse para controles inativos, bem como criar controles que aguardam até serem ativados para criar uma janela.
Quando um controle com uma janela se torna ativo, ele é capaz de interagir totalmente com o contêiner de controle, o usuário e o Windows. A figura abaixo demonstra os caminhos de comunicação entre o controle ActiveX, o contêiner de controle e o sistema operacional.
Processamento de mensagens do Windows em um controle ActiveX em janela (quando ativo)
Serialização
A capacidade de serializar dados, às vezes chamada de persistência, permite que o controle grave o valor de suas propriedades no armazenamento persistente. Os controles podem ser recriados lendo o estado do objeto a partir do armazenamento.
Observe que um controle não é responsável por obter acesso ao meio de armazenamento. Em vez disso, o contêiner do controle é responsável por fornecer ao controle um meio de armazenamento para usar nos momentos apropriados. Para obter mais informações sobre serialização, consulte o artigo Controles ActiveX MFC: serialização. Para obter informações sobre como otimizar a serialização, consulte Otimizando persistência e inicialização em controles ActiveX: otimização.
Instalando classes e ferramentas de controle ActiveX
Quando instalas o Visual C++, as classes de controlo ActiveX MFC e as DLLs de tempo de execução de controlo ActiveX de distribuição e depuração são instaladas automaticamente se os controlos ActiveX forem selecionados durante a instalação (estão selecionados por padrão).
Por padrão, as classes e ferramentas de controle ActiveX são instaladas nos seguintes subdiretórios em \Arquivos de Programas\Microsoft Visual Studio .NET:
\Common7\Ferramentas
Contém os arquivos Test Container (TstCon32.exe, bem como seus arquivos de Ajuda).
\vc7\atlmfc\include
Contém os arquivos de inclusão necessários para desenvolver controles ActiveX com MFC
\vc7\atlmfc\src\mfc
Contém o código-fonte para classes de controle ActiveX específicas no MFC
\vc7\atlmfc\lib
Contém as bibliotecas necessárias para desenvolver controles ActiveX com MFC
Há também exemplos para controles ActiveX MFC. Para obter mais informações sobre esses exemplos, consulte Exemplos de controles: MFC-Based controles ActiveX