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

Saiba como Programar para Windows no C++