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


CConnectionPoint-osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

Meghatározza a más OLE-objektumokkal való kommunikációhoz használt speciális interfésztípust, az úgynevezett "csatlakozási pontot".

Szemantika

class CConnectionPoint : public CCmdTarget

Tagok

Nyilvános konstruktorok

Név Description
CConnectionPoint::CConnectionPoint Egy CConnectionPoint objektumot hoz létre.

Nyilvános metódusok

Név Description
CConnectionPoint::GetConnections Lekéri a kapcsolattérkép összes csatlakozási pontjait.
CConnectionPoint::GetContainer Lekéri a kapcsolattérképet birtokban lévő vezérlő tárolóját.
CConnectionPoint::GetIID Lekéri egy csatlakozási pont felületazonosítóját.
CConnectionPoint::GetMaxConnections A vezérlőelem által támogatott csatlakozási pontok maximális számát kéri le.
CConnectionPoint::GetNextConnection Egy mutatót kér le a kapcsolati elemhez az pos helyen.
CConnectionPoint::GetStartPosition Elindít egy leképezési iterációt egy hívásnak GetNextConnection átadható POSITION érték visszaadásával.
CConnectionPoint::OnAdvise A keretrendszer meghívja a kapcsolatok létrehozásakor vagy feltörésekor.
CConnectionPoint::QuerySinkInterface Lekéri a kívánt fogadófelületre mutató mutatót.

Megjegyzések

Az OLE-vezérlők funkcióinak megvalósítására és elérhetővé ására használt normál OLE-adapterekkel ellentétben a csatlakozási pontok olyan kimenő felületet implementálnak, amely képes műveleteket kezdeményezni más objektumokon, például az események kilövésére és a változásértesítésekre.

A kapcsolat két részből áll: az interfészt hívó objektumból, az úgynevezett "forrásból", és az interfészt megvalósító objektumból, az úgynevezett "fogadóból". Egy csatlakozási pont felfedésével a forrás lehetővé teszi a fogadók számára, hogy kapcsolatot létesíthessenek magukkal. A csatlakozási pont mechanizmusán keresztül a forrásobjektum egy mutatót szerez be a fogadó tagfüggvények halmazának megvalósítására. Ha például egy fogadó által implementált eseményt szeretne elindítani, a forrás meghívhatja a fogadó implementálásának megfelelő metódusát.

Alapértelmezés szerint egy COleControl-származtatott osztály két csatlakozási pontot valósít meg: egyet eseményekhez, egyet pedig a tulajdonságmódosítási értesítésekhez. Ezek a kapcsolatok az eseményégetéshez és a fogadó értesítéséhez (például a vezérlő tárolójának) használatosak, ha egy tulajdonság értéke módosult. Az OLE-vezérlők további csatlakozási pontok implementálásához is támogatást nyújtanak. A vezérlőosztályban implementált minden további csatlakozási ponthoz deklarálnia kell egy "kapcsolati részt", amely megvalósítja a csatlakozási pontot. Ha egy vagy több csatlakozási pontot implementál, egyetlen "kapcsolattérképet" is deklarálnia kell a vezérlőosztályban.

Az alábbi példa egy egyszerű kapcsolattérképet és egy csatlakozási pontot mutat be az Sample OLE-vezérlőhöz, amely két kódtöredékből áll: az első rész deklarálja a kapcsolati térképet és a pontot, a második pedig ezt a térképet és pontot implementálja. Az első töredék be lesz szúrva a vezérlőosztály deklarációjába a protected következő szakaszban:

// Connection point for ISample interface
BEGIN_CONNECTION_PART(CMyClass, SampleConnPt)
CONNECTION_IID(IID_ISampleSink)
END_CONNECTION_PART(SampleConnPt)

DECLARE_CONNECTION_MAP()

A BEGIN_CONNECTION_PART és a END_CONNECTION_PART makrók egy beágyazott osztályt deklarálnak ( XSampleConnPt származtatva CConnectionPoint) az adott csatlakozási pontot implementálva. Ha bármelyik CConnectionPoint tagfüggvényt felül szeretné bírálni, vagy saját tagfüggvényeket szeretne hozzáadni, deklarálja őket a két makró között. A CONNECTION_IID makró például felülbírálja a CConnectionPoint::GetIID tagfüggvényt, amikor a két makró közé kerül.

A második kódrészlet be lesz szúrva a implementációs fájlba (. CPP) a vezérlőosztályból. Ez a kód implementálja a kapcsolati térképet, amely tartalmazza a további csatlakozási pontot is: SampleConnPt

BEGIN_CONNECTION_MAP(CMyClass, CCmdTarget)
   CONNECTION_PART(CMyClass, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()

A kódtöredékek beszúrása után az OLE-minta vezérlőelem elérhetővé tesz egy csatlakozási pontot az ISampleSink interfész számára.

A csatlakozási pontok általában támogatják a "csoportos küldést", amely lehetővé teszi, hogy több, ugyanahhoz a felülethez csatlakoztatott fogadóba is közvetítsen. Az alábbi kódrészlet bemutatja, hogyan lehet csoportos küldést végrehajtani az egyes fogadókon keresztüli iterálással egy csatlakozási ponton:

void CMyClass::CallSinkFunc()
{
   POSITION pos = m_xSampleConnPt.GetStartPosition();
   ISampleSink *pSampleSink;
   while (pos != NULL)
   {
      pSampleSink = (ISampleSink *)(m_xSampleConnPt.GetNextConnection(pos));
      if (pSampleSink != NULL)
      {
         pSampleSink->SinkFunc();
      }
   }
}

Ez a példa lekéri a kapcsolati pont aktuális kapcsolatkészletét SampleConnPt egy hívással CConnectionPoint::GetConnections. Ezután végigvezeti a kapcsolatokat, és meghív ISampleSink::SinkFunc minden aktív kapcsolatot.

A használatról CConnectionPointtovábbi információt a Csatlakozási pontok című cikkben talál.

Öröklési hierarchia

CObject

CCmdTarget

CConnectionPoint

Requirements

Fejléc: afxdisp.h

CConnectionPoint::CConnectionPoint

Egy CConnectionPoint objektumot hoz létre.

CConnectionPoint();

CConnectionPoint::GetConnections

Hívja meg ezt a függvényt egy csatlakozási pont összes aktív kapcsolatának lekéréséhez.

const CPtrArray* GetConnections();

Visszaadott érték

Az aktív kapcsolatok (fogadók) tömbjének mutatója. A tömb egyes mutatói null értékűek lehetnek. A tömb minden nem NULL mutatója biztonságosan átalakítható a fogadó felületre mutató mutatóvá egy öntött operátor használatával.

CConnectionPoint::GetContainer

A keretrendszer meghívta a csatlakozási pont lekéréséhez IConnectionPointContainer .

virtual LPCONNECTIONPOINTCONTAINER GetContainer();

Visszaadott érték

Ha sikeres, a tárolóra mutató mutató; ellenkező esetben NULL.

Megjegyzések

Ezt a függvényt általában a BEGIN_CONNECTION_PART makró implementálja.

CConnectionPoint::GetIID

A keretrendszer meghívta egy csatlakozási pont interfészazonosítójának lekéréséhez.

virtual REFIID GetIID() = 0;

Visszaadott érték

Hivatkozás a csatlakozási pont felületazonosítójára.

Megjegyzések

A függvény felülbírálása a kapcsolati pont felületazonosítójának visszaadásához.

CConnectionPoint::GetMaxConnections

A keretrendszer meghívta, hogy lekérje a csatlakozási pont által támogatott kapcsolatok maximális számát.

virtual int GetMaxConnections();

Visszaadott érték

A vezérlőelem által támogatott kapcsolatok maximális száma, vagy ha nincs korlát, -1.

Megjegyzések

Az alapértelmezett implementáció -1 értéket ad vissza, ami nem jelez korlátot.

Bírálja felül ezt a függvényt, ha korlátozni szeretné a vezérlőhöz csatlakoztatható fogadók számát.

CConnectionPoint::GetNextConnection

Egy mutatót kér le a kapcsolati elemhez az pos helyen.

LPUNKNOWN GetNextConnection(POSITION& pos) const;

Paraméterek

pos
Egy korábbi GetNextConnection vagy GetStartPosition hívás által visszaadott POZÍCIÓ értékre mutató hivatkozást ad meg.

Visszaadott érték

Mutató a pos vagy NULL által megadott kapcsolati elemre.

Megjegyzések

Ez a függvény leginkább a kapcsolattérkép összes elemének iterálásához hasznos. Iteráláskor hagyja ki a függvényből visszaadott NULL-eket.

Example

void CMyClass::CallSinkFunc()
{
   POSITION pos = m_xSampleConnPt.GetStartPosition();
   ISampleSink *pSampleSink;
   while (pos != NULL)
   {
      pSampleSink = (ISampleSink *)(m_xSampleConnPt.GetNextConnection(pos));
      if (pSampleSink != NULL)
      {
         pSampleSink->SinkFunc();
      }
   }
}

CConnectionPoint::GetStartPosition

A getNextConnection hívásnak átadható POSITION érték visszaadásával elindít egy leképezési iterációt.

POSITION GetStartPosition() const;

Visszaadott érték

POZÍCIÓ érték, amely a térkép iterálásának kezdő pozícióját jelzi; vagy NULL értékre, ha a térkép üres.

Megjegyzések

Az iterációs sorrend nem kiszámítható; ezért a "térkép első eleme" nem rendelkezik különleges jelentőséggel.

Example

Lásd a CConnectionPoint::GetNextConnection példáját.

CConnectionPoint::OnAdvise

A keretrendszer meghívja a kapcsolat létrehozásakor vagy megszakadásakor.

virtual void OnAdvise(BOOL bAdvise);

Paraméterek

bAdvise
IGAZ, ha kapcsolat jön létre; egyéb esetben HAMIS.

Megjegyzések

Az alapértelmezett implementáció nem végez semmit.

Bírálja felül ezt a függvényt, ha értesítést szeretne kapni arról, ha a fogadók csatlakoznak a csatlakozási ponthoz, vagy leválasztják a kapcsolati pontról.

CConnectionPoint::QuerySinkInterface

Lekéri a kívánt fogadófelületre mutató mutatót.

virtual HRESULT QuerySinkInterface(
    LPUNKNOWN pUnkSink,
    void** ppInterface);

Paraméterek

pUnkSink
A kért fogadófelület azonosítója.

ppInterface
A pUnkSink által azonosított felületmutatóra mutató mutató. Ha az objektum nem támogatja ezt az interfészt, * a ppInterface értéke NULL.

Visszaadott érték

Standard HRESULT érték.

Lásd még

CCmdTarget osztály
hierarchiadiagram