Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Biblioteket För Microsoft Foundation-klasser (MFC) stöds fortfarande. Vi lägger dock inte längre till funktioner eller uppdaterar dokumentationen.
OLE-kontroller kan exponera gränssnitt för andra program. Dessa gränssnitt tillåter endast åtkomst från en container till den kontrollen. Om en OLE-kontroll vill komma åt externa gränssnitt för andra OLE-objekt måste en anslutningspunkt upprättas. Den här anslutningspunkten tillåter en kontroll av utgående åtkomst till externa sändningskartor, till exempel händelsekartor eller meddelandefunktioner.
Microsoft Foundation-klassbiblioteket erbjuder en programmeringsmodell som stöder anslutningspunkter. I den här modellen används "anslutningskartor" för att ange gränssnitt eller anslutningspunkter för OLE-kontrollen. Anslutningskartor innehåller ett makro för varje anslutningspunkt. Mer information om anslutningskartor finns i CConnectionPoint klassen .
Vanligtvis stöder en kontroll bara två anslutningspunkter: en för händelser och en för egenskapsmeddelanden. Dessa implementeras av basklassen COleControl och kräver inget extra arbete av kontrollskrivaren. Alla andra anslutningsplatser som du vill implementera i klassen måste läggas till manuellt. För att stödja anslutningskartor och -punkter tillhandahåller MFC följande makron:
Deklaration och avgränsning av anslutningskarta
| Namn | Description |
|---|---|
BEGIN_CONNECTION_PART |
Deklarerar en inbäddad klass som implementerar ytterligare en anslutningspunkt (måste användas i klassdeklarationen). |
END_CONNECTION_PART |
Avslutar deklarationen för en anslutningspunkt (måste användas i klassdeklarationen). |
CONNECTION_IID |
Anger gränssnitts-ID för kontrollens anslutningspunkt. |
DECLARE_CONNECTION_MAP |
Deklarerar att en anslutningskarta ska användas i en klass (måste användas i klassdeklarationen). |
BEGIN_CONNECTION_MAP |
Börjar definitionen av en anslutningskarta (måste användas i klassimplementeringen). |
END_CONNECTION_MAP |
Avslutar definitionen av en anslutningskarta (måste användas i klassimplementeringen). |
CONNECTION_PART |
Anger en anslutningspunkt i kontrollens anslutningskarta. |
Följande funktioner hjälper en mottagare att upprätta och koppla från en anslutning med hjälp av anslutningspunkter:
Initiering/avslutning av anslutningspunkter
| Namn | Description |
|---|---|
AfxConnectionAdvise |
Upprättar en anslutning mellan en källa och en mottagare. |
AfxConnectionUnadvise |
Bryter en anslutning mellan en källa och en mottagare. |
BEGIN_CONNECTION_PART
Använd makrot BEGIN_CONNECTION_PART för att börja definiera ytterligare anslutningspunkter utöver anslutningspunkterna för händelse- och egenskapsmeddelanden.
BEGIN_CONNECTION_PART(theClass, localClass)
Parameterar
theClass Anger namnet på kontrollklassen vars anslutningspunkt detta är.
localClass Anger namnet på den lokala klass som implementerar anslutningspunkten.
Anmärkningar
Starta anslutningspunkten med makrot i deklarationsfilen (.h) som definierar medlemsfunktionerna BEGIN_CONNECTION_PART för klassen. Lägg sedan till makrot CONNECTION_IID och andra medlemsfunktioner som du vill implementera. Slutför slutligen anslutningspunktskartan med makrot END_CONNECTION_PART .
Kravspecifikation
Huvudetafxdisp.h
END_CONNECTION_PART
Avslutar deklarationen av anslutningspunkten.
END_CONNECTION_PART(localClass)
Parameterar
localClass
Anger namnet på den lokala klass som implementerar anslutningspunkten.
Kravspecifikation
Huvudetafxdisp.h
CONNECTION_IID
Använd mellan makrona BEGIN_CONNECTION_PART och END_CONNECTION_PART för att definiera ett gränssnitts-ID för en anslutningspunkt som stöds av ole-kontrollen.
CONNECTION_IID(iid)
Parameterar
iid
Gränssnitts-ID:t för gränssnittet som anropas av anslutningspunkten.
Anmärkningar
Argumentet iid är ett gränssnitts-ID som används för att identifiera det gränssnitt som anslutningspunkten anropar på dess anslutna mottagare. Till exempel:
CONNECTION_IID(IID_ISampleSink)
Anger en anslutningspunkt som anropar ISinkInterface gränssnittet.
Kravspecifikation
Huvudetafxdisp.h
DECLARE_CONNECTION_MAP
Varje COleControl-härledd klass i ditt program kan tillhandahålla en anslutningskarta för att ange ytterligare anslutningspunkter som din kontroll stöder.
DECLARE_CONNECTION_MAP()
Anmärkningar
Om kontrollen stöder ytterligare punkter använder du makrot DECLARE_CONNECTION_MAP i slutet av klassdeklarationen. I filen .cpp som definierar medlemsfunktionerna för klassen använder BEGIN_CONNECTION_MAP du sedan makrot, CONNECTION_PART makrona för var och en av kontrollens anslutningspunkter och makrot END_CONNECTION_MAP för att deklarera slutet på anslutningskartan.
Kravspecifikation
Huvudetafxdisp.h
BEGIN_CONNECTION_MAP
Varje COleControl-härledd klass i ditt program kan tillhandahålla en anslutningskarta för att ange anslutningspunkter som din kontroll stöder.
BEGIN_CONNECTION_MAP(theClass, theBase)
Parameterar
theClass
Anger namnet på kontrollklassen vars anslutningsöversikt detta är.
theBase
Anger namnet på basklassen för theClass.
Anmärkningar
I implementeringsfilen (.CPP) som definierar medlemsfunktionerna för klassen startar du anslutningskartan med makrot BEGIN_CONNECTION_MAP och lägger sedan till makroposter för var och en av dina anslutningspunkter med hjälp av makrot CONNECTION_PART . Slutför slutligen anslutningskartan med makrot END_CONNECTION_MAP .
Kravspecifikation
Huvudetafxdisp.h
END_CONNECTION_MAP
Avslutar definitionen av anslutningskartan.
END_CONNECTION_MAP()
Kravspecifikation
Huvudetafxdisp.h
CONNECTION_PART
Mappar en anslutningspunkt för ole-kontrollen till ett specifikt gränssnitts-ID.
CONNECTION_PART(theClass, iid, localClass)
Parameterar
theClass
Anger namnet på kontrollklassen vars anslutningspunkt detta är.
iid
Gränssnitts-ID:t för gränssnittet som anropas av anslutningspunkten.
localClass
Anger namnet på den lokala klass som implementerar anslutningspunkten.
Anmärkningar
Till exempel:
BEGIN_CONNECTION_MAP(CMyClass, CCmdTarget)
CONNECTION_PART(CMyClass, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()
implementerar en anslutningskarta med en anslutningspunkt som anropar IID_ISinkInterface gränssnittet.
Kravspecifikation
Huvudetafxdisp.h
AfxConnectionAdvise
Anropa den här funktionen för att upprätta en anslutning mellan en källa som anges av pUnkSrc, och en mottagare, som anges av pUnkSink.
BOOL AFXAPI AfxConnectionAdvise(
LPUNKNOWN pUnkSrc,
REFIID iid,
LPUNKNOWN pUnkSink,
BOOL bRefCount,
DWORD FAR* pdwCookie);
Parameterar
pUnkSrc
En pekare till objektet som anropar gränssnittet.
pUnkSink
En pekare till objektet som implementerar gränssnittet.
iid
Gränssnittets ID för anslutningen.
bRefCount
För out-of-process-anslutningar måste den här parametern vara TRUE, och anger att om du skapar anslutningen bör referensantalet pUnkSink ökas.
För pågående anslutningar TRUE anger att skapandet av pUnkSink anslutningen ska göra att referensantalet ökas.
FALSE anger att referensantalet inte ska ökas.
Varning! I allmänhet går det inte att förutsäga vilka anslutningar som är i processen och vilka anslutningar som är inaktiva, så vi rekommenderar att du alltid anger den här parametern till TRUE.
pdwCookie
En pekare till en DWORD där en anslutningsidentifierare returneras. Det här värdet ska skickas som parameter till dwCookieAfxConnectionUnadvise när anslutningen kopplas från.
Returvärde
Nonzero om en anslutning upprättades. annars 0.
Example
//CMySink is a CCmdTarget-derived class supporting automation.
//Instantiate the sink class.
CMySink mysink;
//Get a pointer to sink's IUnknown, no AddRef done.
IID iid = IID_IUnknown;
IUnknown* pUnkSink = mysink.GetInterface(&iid);
//Establish a connection between source and sink.
//pUnkSrc is IUnknown of server obtained by CoCreateInstance().
//dwCookie is a cookie identifying the connection, and is needed
//to terminate this connection.
AfxConnectionAdvise(pUnkSrc, IID_ISampleSink, pUnkSink, TRUE, &dwCookie);
Kravspecifikation
Rubrik:afxctl.h
AfxConnectionUnadvise
Anropa den här funktionen för att koppla från en anslutning mellan en källa som anges av pUnkSrc, och en mottagare som anges av pUnkSink.
BOOL AFXAPI AfxConnectionUnadvise(
LPUNKNOWN pUnkSrc,
REFIID iid,
LPUNKNOWN pUnkSink,
BOOL bRefCount,
DWORD dwCookie);
Parameterar
pUnkSrc
En pekare till objektet som anropar gränssnittet.
pUnkSink
En pekare till objektet som implementerar gränssnittet.
iid
Gränssnitts-ID för anslutningspunktsgränssnittet.
bRefCount
För out-of-process-anslutningar måste den här parametern vara TRUE, och anger att om du skapar anslutningen bör referensantalet pUnkSink minskas.
För pågående anslutningar TRUE anger att om du skapar anslutningen bör referensantalet pUnkSink minskas.
FALSE anger att referensantalet inte ska minskas.
Varning! I allmänhet går det inte att förutsäga vilka anslutningar som är i processen och vilka anslutningar som är inaktiva, så vi rekommenderar att du alltid anger den här parametern till TRUE.
dwCookie
Anslutningsidentifieraren som returneras av AfxConnectionAdvise.
Returvärde
Nonzero om en anslutning har kopplats från. annars 0.
Example
//mysink is a CCmdTarget-derived class supporting automation.
//Get a pointer to sink's IUnknown, no AddRef done.
IID iid = IID_IUnknown;
IUnknown* pUnkSink = mysink.GetInterface(&iid);
//Terminate a connection between source and sink.
//pUnkSrc is IUnknown of server obtained by CoCreateInstance().
//dwCookie is a value obtained through AfxConnectionAdvise().
AfxConnectionUnadvise(pUnkSrc, IID_ISampleSink, pUnkSink, TRUE, dwCookie);
Kravspecifikation
Rubrik:afxctl.h