Módulo 2. Usando COM em seu programa de Windows-Based
O módulo 1 desta série mostrou como criar uma janela e responder a mensagens de janela, como WM_PAINT e WM_CLOSE. O módulo 2 apresenta o COM (Component Object Model).
COM é uma especificação para criar componentes de software reutilizáveis. Muitos dos recursos que você usará em um programa moderno baseado no Windows dependem do COM, como o seguinte:
- Gráficos (Direct2D)
- Texto (DirectWrite)
- O Shell do Windows
- O controle Faixa de Opções
- Animação da interface do usuário
(Algumas tecnologias nesta lista usam um subconjunto de COM e, portanto, não são "puras" COM.)
COM tem a reputação de ser difícil de aprender. E é verdade que escrever um novo módulo de software para dar suporte ao COM pode ser complicado. No entanto, se o programa for estritamente um consumidor de COM, você poderá achar que o COM é mais fácil de entender do que o esperado.
Este módulo mostra como chamar APIs baseadas em COM em seu programa. Ele também descreve alguns dos raciocínios por trás do design do COM. Se você entender por que o COM foi projetado como ele é, você pode programar com ele com mais eficiência. A segunda parte do módulo descreve algumas práticas de programação recomendadas para COM.
O COM foi introduzido em 1993 para dar suporte ao OLE (Object Linking and Embedding) 2.0. Pessoas às vezes acha que COM e OLE são a mesma coisa. Esse pode ser outro motivo para a percepção de que COM é difícil de aprender. O OLE 2.0 é criado com base no COM, mas você não precisa saber o OLE para entender o COM.
COM é um padrão binário, não um padrão de linguagem: define a interface binária entre um aplicativo e um componente de software. Como um padrão binário, o COM é neutro em linguagem, embora mapeia naturalmente para determinados constructos C++. Este módulo se concentrará em três objetivos principais do COM:
- Separando a implementação de um objeto de sua interface.
- Gerenciando o tempo de vida de um objeto.
- Descobrir os recursos de um objeto em tempo de execução.
Nesta seção
- O que é uma interface COM?
- Inicializando a biblioteca COM
- Códigos de erro no COM
- Criando um objeto em COM
- Exemplo: a caixa de diálogo Abrir
- Gerenciando o tempo de vida de um objeto
- Solicitando um objeto para uma interface
- Alocação de memória em COM
- Práticas de codificação COM
- Tratamento de erros no COM
Tópicos relacionados