Controles de ActiveX do MFC

Um controle ActiveX é um componente de software reutilizável com base no componente objeto modelo (COM) que suporta uma ampla variedade de funcionalidades OLE e podem ser personalizados para atender a muitas necessidades de software.Controles de ActiveX são projetados para uso em recipientes de controle ActiveX comuns e na Internet, em páginas da World Wide Web.Você pode criar controles de ActiveX com o MFC, descrito aqui, ou com o Active Template Library ((ATL)).

Um controle ActiveX pode desenhar a mesmo em sua própria janela, responder a eventos (como cliques do mouse) e ser gerenciado através de uma interface inclui propriedades e métodos semelhantes aos objetos de automação.

Esses controles podem ser desenvolvidos para muitos usos, como acesso de banco de dados, dados de monitoramento ou gráficos.Além de sua portabilidade ActiveX controles oferecem suporte a recursos anteriormente não está disponíveis para controles de ActiveX, como, por exemplo, compatibilidade com recipientes OLE existentes e a capacidade de integrar seus menus os menus de recipiente OLE.Além disso, um controle ActiveX totalmente oferece suporte a automação, que permite o controle para expor propriedades de leitura \ gravação e um conjunto de métodos que podem ser chamados pelo usuário de controle.

Você pode criar controles sem janelas de ActiveX e que criar uma janela somente quando se tornam ativas.Controles sem janelas aceleram a exibição do seu aplicativo e tornam possível ter controles não retangulares e transparentes.Você também pode carregar propriedades do controle ActiveX assincronamente.

Um controle ActiveX é implementado como um servidor em processo (geralmente um objeto pequeno) que pode ser usado em qualquer recipiente OLE.Observe que a funcionalidade completa de um controle ActiveX está disponível somente quando usado dentro de um recipiente OLE desenvolvido para estar ciente dos controles de ActiveX.Consulte Controles de ActiveX de porta para outros aplicativos para obter uma lista de contêineres que oferecem suporte a controles de ActiveX.Esse tipo de recipiente, doravante denominado "recipiente de controle", pode operar um controle ActiveX usando propriedades e métodos do controle e recebe notificações de controle ActiveX na forma de eventos.A figura a seguir demonstra essa interação.

Interação entre um contêiner de controle de ActiveX e um controle ActiveX em janelas

Interações do controle ActiveX

Algumas informações recentes sobre como otimizar seus controles de ActiveX, consulte controles de ActiveX de MFC: otimização.

Para criar um controle MFC ActiveX, consulte criar um projeto de controle de ActiveX.

Para obter mais informações, consulte:

Componentes básicos de um controle ActiveX

Um controle ActiveX usa vários elementos de programação para interagir eficientemente com um controle contêiner e o usuário.Essas são a classe COleControl, um conjunto de funções de acionamento do evento e um despacho de mapa.

Cada objeto de controle de ActiveX você desenvolva herda um poderoso conjunto de recursos de sua classe base do MFC, COleControl.Esses recursos incluem ativação in-loco e lógica de automação.COleControlpode fornecer o objeto de controle com a mesma funcionalidade de um objeto de janela MFC além da capacidade de disparar eventos.COleControltambém pode fornecer controles sem janelas, que dependem seus recipientes para obter ajuda com algumas das funcionalidades de uma janela fornece (captura do mouse, o foco do teclado, rolagem), mas oferecem muito mais rápido do vídeo.

Porque a classe control deriva de COleControl, ela herda a capacidade de enviar ou chamado de "incêndio", mensagens, eventos, para o recipiente de controle quando determinadas condições forem 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 para o evento.Para obter mais informações sobre eventos de controle de ActiveX, consulte o artigo controles de ActiveX de MFC: eventos.

O elemento final é um mapa de despacho, que é usado para expor um conjunto de atributos (denominados propriedades) para o usuário do controle e funções (chamadas de métodos).Propriedades permitem que o contêiner de controle ou o usuário de controle para manipular o controle de várias maneiras.O usuário pode alterar a aparência do controle, alterar determinados valores do controle ou fazer solicitações de controle, como acessar uma parte específica dos dados que mantém o controle.Essa interface é determinada pelo desenvolvedor do controle e é definido usando Exibição de classe.Para obter mais informações sobre propriedades e métodos de controle de ActiveX, consulte os artigos controles de ActiveX de MFC: métodos e Propriedades.

Interação entre os controles com o Windows e recipientes de controle ActiveX

Quando um controle é usado dentro de um controle contêiner, ele usa dois mecanismos para comunicar: ele expõe métodos e propriedades e aciona eventos.A figura a seguir demonstra como esses dois mecanismos são implementados.

Comunicação entre um contêiner de controle de ActiveX e um controle ActiveX

ActiveXCntrl de contêiner ActiveX CTRL comunicação

A figura anterior também ilustra como outras interfaces OLE (além de automação e eventos) são manipulados pelos controles.

Todas as comunicações do controle com o contêiner é executada por COleControl.Para lidar com algumas solicitações do contêiner, COleControl irá chamar membro funções que são implementadas na classe de controle.Todos os métodos e algumas propriedades são tratadas dessa forma.Classe do controle também pode iniciar a comunicação com o contêiner chamando funções de membro COleControl.Eventos são disparados dessa maneira.

Estados ativo e inativo de um controle ActiveX

Um controle tem dois estados básicos: ativos e inativos.Tradicionalmente, esses estados foram distintos pela se o controle tinha uma janela.Um controle ativo tinha uma janela; um controle inativo não.Com a introdução de ativação sem janelas, essa distinção não é mais universal, mas ainda se aplica a vários controles.

Quando um controle sem janelas fica ativa, ele invoca a captura do mouse, o foco do teclado, rolagem e outros serviços da janela de seu recipiente.Você também pode fornecem a interação com o mouse para controles inativos, bem como criar controles que Aguarde ativado para criar uma janela.

Quando um controle com uma janela é ativo, é 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 de ActiveX, o recipiente de controle e o sistema operacional.

Mensagem do Windows de processamento em um controle ActiveX em janelas (quando ativo)

Win Msg processamento janela ActiveX Windows (ativo)

Série

A capacidade de serializar dados, às vezes chamados de persistência, permite o controle gravar o valor de suas propriedades para armazenamento persistente.Controles podem ser recriados depois lendo o estado do objeto do armazenamento.

Observe que um controle não é responsável por obter acesso à mídia de armazenamento.Em vez disso, recipiente do controle é responsável por fornecer o controle com uma mídia de armazenamento para usar em momentos apropriados.Para obter mais informações sobre serialização, consulte o artigo controles de ActiveX de MFC: serializar.Para obter informações sobre como otimizar a serialização, consulte Otimizando persistência e inicialização ActiveX controles: otimização.

Instalando ferramentas e Classes de controle ActiveX

Quando você instala o Visual C++, ActiveX MFC controlar classes e varejo e depurar DLLs de tempo de execução são instaladas automaticamente se ActiveX controles são selecionados no programa de instalação (eles são selecionados por padrão) do controle de ActiveX.

Por padrão, as classes de controle de ActiveX e ferramentas são instaladas nos seguintes subdiretórios em \Arquivos de Visual Studio.NET:

  • \Common7\Tools

    Contém os arquivos de contêiner de teste (TstCon32.exe, bem como seus arquivos de ajuda).

  • \Vc7\atlmfc\include

    Contém os arquivos de inclusão necessários para desenvolver controles de ActiveX com MFC

  • \Vc7\atlmfc\src\mfc

    Contém o código-fonte para classes específicas de controle ActiveX no MFC

  • \Vc7\atlmfc\lib

    Contém as bibliotecas necessárias para desenvolver controles de ActiveX com MFC

Também são exemplos de controles do MFC ActiveX.Para obter mais informações sobre esses exemplos, consulte exemplos de controles: controles de ActiveX de MFC-Based

Consulte também

Outros recursos

Interface de usuário