Sdílet prostřednictvím


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

600taxa7.collapse_all(cs-cz,VS.110).gifVeřejné konstruktory

Název

Description

CConnectionPoint::CConnectionPoint

Konstrukce CConnectionPoint objektu.

600taxa7.collapse_all(cs-cz,VS.110).gifVeřejné metody

Název

Description

CConnectionPoint::GetConnections

Načte všechny spojovací body na mapě připojení.

CConnectionPoint::GetContainer

Načte kontejneru ovládacího prvku, který vlastní připojení mapy.

CConnectionPoint::GetIID

Načte ID rozhraní spojovacího bodu.

CConnectionPoint::GetMaxConnections

Maximální počet bodů připojení podporovaný ovládací prvek načte.

CConnectionPoint::GetNextConnection

Načte ukazatel na prvek připojení na pos .

CConnectionPoint::GetStartPosition

Spustí mapu iterace vrácením pozice hodnotu, kterou lze předat GetNextConnection volání.

CConnectionPoint::OnAdvise

Volat framework při stanovení nebo přerušení připojení.

CConnectionPoint::QuerySinkInterface

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

CObject

CCmdTarget

CConnectionPoint

Požadavky

Záhlaví: afxdisp.h

Viz také

Referenční dokumentace

Třída CCmdTarget

Diagram hierarchie