Condividi tramite


Modulo 2. Utilizzo di COM nel programma Windows-Based

modulo 1 di questa serie ha illustrato come creare una finestra e rispondere ai messaggi della finestra, ad esempio WM_PAINT e WM_CLOSE. Il modulo 2 introduce il modello COM (Component Object Model).

COM è una specifica per la creazione di componenti software riutilizzabili. Molte delle funzionalità che verranno usate in un programma moderno basato su Windows si basano su COM, ad esempio:

  • Grafica (Direct2D)
  • Testo (DirectWrite)
  • Shell di Windows
  • Controllo barra multifunzione
  • Animazione dell'interfaccia utente

Alcune tecnologie in questo elenco usano un subset di COM e pertanto non sono "pure" COM.

COM ha una reputazione per essere difficile da imparare. Ed è vero che scrivere un nuovo modulo software per supportare COM può essere complicato. Ma se il programma è strettamente un consumer di COM, si potrebbe scoprire che COM è più facile da comprendere di quanto previsto.

Questo modulo illustra come chiamare LE API basate su COM nel programma. Descrive anche alcuni dei motivi alla base della progettazione di COM. Se si capisce perché COM è progettato così com'è, è possibile programmare con esso in modo più efficace. La seconda parte del modulo descrive alcune procedure di programmazione consigliate per COM.

COM è stato introdotto nel 1993 per supportare Object Linking and Embedding (OLE) 2.0. Le persone a volte pensano che COM e OLE siano la stessa cosa. Questo può essere un altro motivo per la percezione che COM è difficile da imparare. OLE 2.0 è basato su COM, ma non è necessario conoscere OLE per comprendere COM.

COM è un standard binario, non uno standard linguistico: definisce l'interfaccia binaria tra un'applicazione e un componente software. Come standard binario, COM è indipendente dal linguaggio, anche se esegue il mapping naturalmente a determinati costrutti C++. Questo modulo si concentrerà su tre obiettivi principali di COM:

  • Separazione dell'implementazione di un oggetto dalla relativa interfaccia.
  • Gestione della durata di un oggetto.
  • Individuazione delle funzionalità di un oggetto in fase di esecuzione.

In questa sezione

Impara a programmare per Windows in C++