Lägga till anslutningspunkter till ett objekt

ATL-självstudien visar hur du skapar en kontroll med stöd för anslutningspunkter, hur du lägger till händelser och sedan hur du implementerar anslutningspunkten. ATL implementerar anslutningspunkter med IConnectionPointImpl klassen.

För att implementera en anslutningspunkt har du två alternativ:

  • Implementera din egen utgående händelsekälla genom att lägga till en anslutningspunkt i kontrollen eller objektet.
  • Återanvänd ett anslutningspunktsgränssnitt som definierats i ett annat typbibliotek.

I båda fallen använder guiden Implementera anslutningspunkt ett typbibliotek för att utföra sitt arbete.

Lägga till en anslutningspunkt till en kontroll eller ett objekt

  1. Definiera ett dispinterface i filbiblioteksblocket .idl . Om du har aktiverat stöd för anslutningspunkter när du skapade kontrollen med ATL-kontrollguiden kommer dispinterface redan att skapas. Om du inte aktiverade stöd för anslutningspunkter när du skapade kontrollen måste du manuellt lägga till ett dispinterface i .idl filen. Följande är ett exempel på ett dispinterface. Utgående gränssnitt måste inte vara dispatch-gränssnitt, men många skriptspråk som VBScript och JScript kräver detta, så i det här exemplet används två olika gränssnitt:

    [
       uuid(3233E37D-BCC0-4871-B277-48AE6B61224A),
       helpstring("Buddy Events")
    ]
    dispinterface DBuddyEvents
    {
       properties:
       methods:
    };
    

    Använd antingen uuidgen.exe verktyget eller guidgen.exe för att generera ett GUID.

  2. Lägg till dispinterface som [default,source] gränssnitt i samklassen för objektet i projektets .idl fil. Återigen, om du har aktiverat stöd för anslutningspunkter när du skapade kontrollen, kommer ATL-kontrollguiden att skapa posten [default,source]. Om du vill lägga till den här posten manuellt lägger du till raden i fetstil:

    coclass Buddy
    {
       [default] interface IBuddy;
       [default,source] dispinterface DBuddyEvents;
    };
    

    .idl Ett exempel finns i filen i Circ ATL-exemplet.

  3. Använd klassvyn för att lägga till metoder och egenskaper i händelsegränssnittet. Högerklicka på klassen i klassvyn, peka på Lägg till på snabbmenyn och välj Lägg till anslutningspunkt.

  4. I listrutan Källgränssnitt i guiden Implementera anslutningspunkt väljer du Projektets gränssnitt. Om du väljer ett gränssnitt för kontrollen och väljer OK:

    • Generera en rubrikfil med en händelseproxyklass som implementerar koden som ska göra utgående anrop för händelsen.
    • Lägg till en post i anslutningspunktskartan.

    Du ser också en lista över alla typbibliotek på datorn. Använd bara ett av dessa andra typbibliotek för att definiera din anslutningspunkt om du vill implementera exakt samma utgående gränssnitt som finns i ett annat typbibliotek.

Återanvända ett anslutningspunktsgränssnitt som definierats i ett annat typbibliotek

  1. I Klassvy högerklickar du på en klass som implementerar ett BEGIN_COM_MAP makro, pekar på Lägg till på snabbmenyn och väljer Lägg till anslutningspunkt.

  2. I guiden Implementera anslutningspunkt väljer du ett typbibliotek och ett gränssnitt i typbiblioteket och väljer Lägg till.

  3. Redigera filen .idl till ett av följande:

    • Kopiera dispinterface från .idl filen för objektet vars händelsekälla används.
    • Använd importlib-instruktionen för det typbiblioteket.

Se även

Anslutningspunkt