Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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.