Condividi tramite


Aggiunta di punti di connessione a un oggetto

L'esercitazione su ATL illustra come creare un controllo con supporto per i punti di connessione, come aggiungere eventi e quindi come implementare il punto di connessione. ATL implementa i punti di connessione con la IConnectionPointImpl classe .

Per implementare un punto di connessione, sono disponibili due opzioni:

  • Implementare la propria origine evento in uscita aggiungendo un punto di connessione al controllo o all'oggetto .
  • Riutilizzare un'interfaccia del punto di connessione definita in un'altra libreria dei tipi.

In entrambi i casi, la Procedura guidata Implementare Punto di Connessione utilizza una libreria di tipi per eseguire il proprio lavoro.

Aggiungere un punto di connessione a un controllo o a un oggetto

  1. Definire una dispinterface nel blocco di libreria del .idl file. Se è stato abilitato il supporto per i punti di connessione quando è stato creato il controllo con la Creazione guidata controllo ATL, la dispinterface verrà già creata. Se non è stato abilitato il supporto per i punti di connessione quando è stato creato il controllo, è necessario aggiungere manualmente una dispinterface al .idl file. Di seguito è riportato un esempio di dispinterface. Le interfacce in uscita non devono essere interfacce dispatch, ma molti linguaggi di scripting, ad esempio VBScript e JScript, richiedono questa operazione, quindi questo esempio usa due interfacce dispinterface:

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

    Usare l'utilità uuidgen.exe o guidgen.exe per generare un GUID.

  2. Aggiungere la dispinterface come interfaccia [default,source] nella coclasse per l'oggetto nel file .idl del progetto. Anche in questo caso, se è stato abilitato il supporto per i punti di connessione al momento della creazione del controllo, la Creazione Guidata Controllo ATL creerà l'entry [default,source]. Per aggiungere manualmente questa voce, aggiungere la riga in grassetto:

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

    Per un esempio, vedere il .idl file nell'esempio Circ ATL.

  3. Utilizzare Visualizzazione classi per aggiungere metodi e proprietà all'interfaccia evento. Fare clic con il pulsante destro del mouse sulla classe in Visualizzazione classi, scegliere Aggiungi dal menu di scelta rapida e scegliere Aggiungi punto di connessione.

  4. Nella casella di riepilogo Interfacce di origine della Procedura guidata Implementa punto di connessione, selezionare Interfacce del progetto. Se si sceglie un'interfaccia per il controllo e si seleziona OK, è possibile:

    • Generare un file di intestazione con una classe proxy di evento che implementa il codice che effettuerà le chiamate in uscita per l'evento.
    • Aggiungere una voce alla mappa dei punti di connessione.

    Viene visualizzato anche un elenco di tutte le librerie dei tipi sul tuo computer. Usare solo una di queste altre librerie di tipi per definire il punto di connessione se si vuole implementare la stessa interfaccia in uscita esatta presente in un'altra libreria dei tipi.

Riutilizzare un'interfaccia del punto di connessione definita in un'altra libreria dei tipi

  1. In Visualizzazione classi fare clic con il pulsante destro del mouse su una classe che implementa una BEGIN_COM_MAP macro, scegliere Aggiungi dal menu di scelta rapida e scegliere Aggiungi punto di connessione.

  2. Nella Procedura guidata Implementa punto di connessione selezionare una libreria dei tipi e un'interfaccia nella libreria dei tipi e selezionare Aggiungi.

  3. Modificare il .idl file in uno dei due modi seguenti:

    • Copiare la "dispinterface" dal file .idl per l'oggetto di cui si sta utilizzando la sorgente degli eventi.
    • Usare l'istruzione importlib in tale libreria dei tipi.

Vedi anche

Punto di connessione