Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Definire una dispinterface nel blocco di libreria del
.idlfile. 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.idlfile. 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.exeoguidgen.exeper generare un GUID.Aggiungere la dispinterface come interfaccia
[default,source]nella coclasse per l'oggetto nel file.idldel 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
.idlfile nell'esempio Circ ATL.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.
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
In Visualizzazione classi fare clic con il pulsante destro del mouse su una classe che implementa una
BEGIN_COM_MAPmacro, scegliere Aggiungi dal menu di scelta rapida e scegliere Aggiungi punto di connessione.Nella Procedura guidata Implementa punto di connessione selezionare una libreria dei tipi e un'interfaccia nella libreria dei tipi e selezionare Aggiungi.
Modificare il
.idlfile in uno dei due modi seguenti:- Copiare la "dispinterface" dal file
.idlper l'oggetto di cui si sta utilizzando la sorgente degli eventi. - Usare l'istruzione importlib in tale libreria dei tipi.
- Copiare la "dispinterface" dal file