Condividi tramite


Modulo 2. Uso di COM nel programma Windows-Based

Il modulo 1 di questa serie ha illustrato come creare una finestra e rispondere ai messaggi di 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. È vero che la scrittura di un nuovo modulo software per supportare COM può essere difficile. Tuttavia, se il programma è strettamente un consumer di COM, si potrebbe notare 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. Persone talvolta pensare 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 è uno 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 naturale 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.

Contenuto della sezione

Informazioni sul programma per Windows in C++