Megosztás a következőn keresztül:


2. modul. COM használata a Windows-Based programban

sorozat 1. moduljának bemutatta, hogyan hozhat létre ablakot, és hogyan válaszolhat az ablaküzenetekre, például WM_PAINT és WM_CLOSE. A 2. modul bemutatja a komponensobjektum-modellt (COM).

A COM az újrafelhasználható szoftverösszetevők létrehozásának specifikációja. A modern Windows-alapú programokban használt funkciók közül számos a COM-ra támaszkodik, például a következőkre:

  • Grafika (Direct2D)
  • Szöveg (DirectWrite)
  • A Windows Rendszerhéj
  • A menüszalag vezérlőelem
  • Felhasználói felület animációja

(A listán szereplő egyes technológiák a COM egy részét használják, ezért nem "tiszta" COM-t használnak.)

COM arról ismert, hogy nehéz megtanulni. És igaz, hogy egy új szoftvermodul írása a COM támogatásához bonyolult lehet. De ha a program szigorúan fogyasztói a COM, akkor úgy találja, hogy a COM könnyebben érthető, mint várt.

Ez a modul bemutatja, hogyan hívhat meg COM-alapú API-kat a programban. Emellett a COM kialakításának néhány érvelését is ismerteti. Ha tisztában van azzal, hogy a COM miért van így tervezve, hatékonyabban programozott vele. A modul második része a COM-hoz ajánlott programozási eljárásokat ismerteti.

A COM-t 1993-ban vezették be az Object Linking and Embedding (OLE) 2.0 támogatásához. Az emberek néha azt hiszik, hogy a COM és az OLE ugyanaz. Ez lehet egy másik oka annak a felfogásnak, hogy a COM nehezen tanulható. Az OLE 2.0 a COM-ra épül, de nem kell ismernie az OLE-t a COM megértéséhez.

A COM egy bináris standard, nem pedig nyelvi szabvány: Az alkalmazás és a szoftverösszetevő közötti bináris interfészt határozza meg. Bináris szabványként a COM nyelvsemleges, bár természetesen megfelel bizonyos C++ szerkezeteknek. Ez a modul a COM három fő céljára összpontosít:

  • Az objektum implementációjának elkülönítése a felületétől.
  • Egy objektum élettartamának kezelése.
  • Az objektumok futási idejének képességeinek felderítése.

Ebben a szakaszban

Tanulj meg programozni Windowsra C++-ban