Třída CConnectionPoint
Definuje speciální typ rozhraní používaný ke komunikaci s jinými objekty OLE, nazývané "bod připojení".
class CConnectionPoint : public CCmdTarget
Členy
Veřejné konstruktory
Název |
Description |
---|---|
Konstrukce CConnectionPoint objektu. |
Veřejné metody
Název |
Description |
---|---|
Načte všechny spojovací body na mapě připojení. |
|
Načte kontejneru ovládacího prvku, který vlastní připojení mapy. |
|
Načte ID rozhraní spojovacího bodu. |
|
Maximální počet bodů připojení podporovaný ovládací prvek načte. |
|
Načte ukazatel na prvek připojení na pos . |
|
Spustí mapu iterace vrácením pozice hodnotu, kterou lze předat GetNextConnection volání. |
|
Volat framework při stanovení nebo přerušení připojení. |
|
Načte ukazatele na rozhraní Požadovaná jímka. |
Poznámky
Na rozdíl od běžné rozhraní OLE, které slouží k provádění a vystavit funkce ovládacího prvku OLE implementuje bod připojení odchozí rozhraní, které je možné zahájit činnosti na jiné objekty, například při aktivaci události a upozornění na změny.
Připojení se skládá ze dvou částí: objekt volání rozhraní, nazvané "zdroj" a objekt implementace rozhraní, se nazývá "jímky." Zdroj vystavuje spojovací bod, umožňuje připojit k samotné propadů.Zdrojový objekt prostřednictvím mechanismu bodu připojení, získá ukazatel na provádění sadu funkcí členů jímky.Požární implementována jímkou událostí, například zdroje mohou volat vhodný způsob provádění jímky.
Standardně COleControl -odvozená třída implementuje dvě spojovací body: jeden pro události a jeden pro vlastnost změnit oznámení.Tato připojení jsou používány, pro spouštění událostí a při oznamování jímky (například na ovládací prvek kontejner) hodnotu vlastnosti byl změněn.Podpora je poskytována také pro ovládací prvky OLE implementovat další spojovací body.Pro každý další spojovací bod implementován ve své třídě ovládacího prvku musíte deklarovat "připojení části", který implementuje spojovací bod.Pokud implementujete jedno nebo více spojovacích bodů, potřebujete také deklarovat jediný "připojení map" ve své třídě ovládacího prvku.
Příklad jednoduchého připojení mapy a bod jedno připojení Sample ovládací prvek OLE skládající se ze dvou fragmentů kódu: první část prohlašuje připojení mapy a bod; druhý implementuje toto mapování a bod.První část je vložen do deklarace třídy řízení pod protected oddíl:
// Connection point for ISample interface
BEGIN_CONNECTION_PART(CMyClass, SampleConnPt)
CONNECTION_IID(IID_ISampleSink)
END_CONNECTION_PART(SampleConnPt)
DECLARE_CONNECTION_MAP()
BEGIN_CONNECTION_PART a END_CONNECTION_PART makra deklarovat třídu vloženého XSampleConnPt (odvozené z CConnectionPoint ), implementuje tento bod konkrétní připojení.Pokud chcete potlačit jakýkoli CConnectionPoint funkce členů nebo přidat funkce členů vlastní, deklarovat mezi tyto dvě makra.Například CONNECTION_IID makro potlačí CConnectionPoint::GetIID členské funkce když mezi tyto dvě makra.
Druhý fragment kódu je vložen do souboru implementace (.CPP) vaší třídy řízení.Tento kód implementuje mapa připojení zahrnuje další spojovací bod, SampleConnPt :
BEGIN_CONNECTION_MAP(CMyClass, CCmdTarget)
CONNECTION_PART(CMyClass, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()
Po vložení těchto fragmentů kódu ovládacího prvku OLE vzorku zpřístupňuje spojovací bod pro ISampleSink rozhraní.
Spojovací body obvykle podporují "vysílání", což je schopnost vysílání více umyvadel stejné rozhraní připojení.Následující fragment kódu ukazuje, jak dosáhnout vícesměrové vysílání pomocí iterace každého jímky na spojovací bod:
void CMyClass::CallSinkFunc()
{
POSITION pos = m_xSampleConnPt.GetStartPosition();
ISampleSink* pSampleSink;
while( pos != NULL )
{
pSampleSink = (ISampleSink*)(m_xSampleConnPt.GetNextConnection(pos));
if(pSampleSink != NULL)
pSampleSink->SinkFunc();
}
}
V tomto příkladu načte aktuální nastavení připojení na SampleConnPt spojovací bod s voláním CConnectionPoint::GetConnections .Provádí iterace prostřednictvím připojení a volání ISampleSink::SinkFunc na každý aktivní připojení.
Další informace o použití CConnectionPoint , naleznete v článku Spojovací body.
Hierarchii dědičnosti
CConnectionPoint
Požadavky
Záhlaví: afxdisp.h