Controles ActiveX MFC: otimização
Este artigo explica as técnicas que você pode usar para otimizar seus controles ActiveX para melhor desempenho.
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.
Os tópicos Desativando a opção Ativar quando visível e Fornecendo interação do mouse enquanto inativo discutem controles que não criam uma janela até serem ativados. O tópico Fornecendo ativação sem janelas discute controles que nunca criam uma janela, mesmo quando são ativados.
As janelas tem duas grandes desvantagens para objetos OLE: elas impedem que os objetos sejam transparentes ou não retangulares quando ativos e adicionam uma grande sobrecarga à instanciação e à exibição de controles. Normalmente, a criação de uma janela leva 60% do tempo de criação de um controle. Com uma única janela compartilhada (geralmente a do contêiner) e algum código de expedição, um controle recebe os mesmos serviços de janela, geralmente sem perda de desempenho. Ter uma janela representa, em grande medida, uma sobrecarga desnecessária para o objeto.
Algumas otimizações não necessariamente melhoram o desempenho quando o controle é usado em determinados contêineres. Por exemplo, os contêineres lançados antes de 1996 não dão suporte à ativação sem janelas, portanto, a implementação desse recurso não proporcionará um benefício a contêineres mais antigos. No entanto, quase todos os contêineres dão suporte à persistência; portanto, otimizar o código de persistência do controle provavelmente melhorará o desempenho em qualquer contêiner. Se o controle for especificamente destinado ao uso com um tipo específico de contêiner, convém pesquisar quais dessas otimizações têm suporte nesse contêiner. Em geral, no entanto, você deve tentar implementar quantas dessas técnicas forem aplicáveis ao seu controle específico para garantir que o controle seja executado da melhor maneira possível em uma ampla variedade de contêineres.
Você pode implementar muitas dessas otimizações por meio do Assistente de controle ActiveX do MFC, na página Configurações de controle.
Opções de otimização OLE do Assistente de controle ActiveX do MFC
Configurações de controle no Assistente de Controle ActiveX do MFC | Ação | Mais informações |
---|---|---|
Caixa de seleção Ativar quando visível | Clear | Desativando a opção Ativar quando visível |
Caixa de seleção Ativação sem janelas | Selecionar | Fornecendo ativação sem janelas |
Caixa de seleção Contexto de dispositivo não recortado | Selecionar | Usando um contexto de dispositivo não recortado |
Caixa de seleção Ativação sem cintilação | Selecionar | Fornecendo ativação sem cintilação |
Caixa de seleção Notificações de ponteiro do mouse quando inativa | Selecionar | Fornecendo interação do mouse enquanto inativo |
Caixa de seleção Código de desenho otimizado | Selecionar | Otimizando o desenho de controle |
Para obter informações detalhadas sobre as funções membro que implementam essas otimizações, consulte COleControl.
Para saber mais, veja: