El ATL Tutorial muestra cómo crear u&n control con soporte para puntos de conexión, cómo agregar eventos y, a continuación, cómo implementar la point.nbsp de conexión; IConnectionPointImpl discute cómo ATL implementa un punto de conexión.
Para implementar un punto de conexión, tienes dos opciones:
Implementar su propio origen de evento Vary saliente (punto de conexión).
Reutilizar una interfaz de punto de conexión definida en otra biblioteca de tipo.
En cualquier caso, el Asistente de punto de conexión utiliza una biblioteca de tipos para hacer su trabajo.
&Notanbsp; Cada vez que agregue un método a una interfaz dispinterface que ya han implementado un punto de conexión, debe volver a compilar el archivo .idl y, a continuación, siga el procedimiento para agregar un punto de conexión a un objeto o control.
Para agregar un punto de conexión a un control o un objeto
Definir una interfaz dispinterface en el bloque de la biblioteca del archivo .idl. Si ha seleccionado la casilla de verificación de Puntos de conexión de soporte en la ficha atributos del Asistente para objetos ATL, ya se creará la interfaz dispinterface. Si no selecciona la casilla de verificación de Puntos de conexión de soporte , debe agregar manualmente una interfaz dispinterface al archivo .idl. El siguiente es un ejemplo de una interfaz dispinterface. Interfaces de salida no están obligadas a ser interfaces de envío pero muchos lenguajes de secuencias de comandos, como VBScript y JavaScript requieren, por lo que este ejemplo utiliza dos interfaces dispinterface:
Utilizar las utilidades guidgen.exe o uuidgen.exe para generar un GUID.
Agregue la interfaz dispinterface como [predeterminado, fuente] interfaz en la coclase para la object.nbsp; &Nuevamente, si ha seleccionado la casilla de verificación de Puntos de conexión de soporte en la ficha atributos del Asistente para objetos ATL para este control, el asistente creará [predeterminado, fuente] entrada. Para agregar esta entrada, agregue la línea en negrita:
coclase Buddy { interfaz [predeterminada] IBuddy;[predeterminado, de origen] dispinterface DBuddyEvents;}
Consulte el archivo .idl en el Circ ATL muestra un ejemplo.
Utilice ClassView para agregar métodos y propiedades de la interfaz de eventos.
U&na vez la interfaz dispinterface plenamente definida, compile el archivo .idl haciendo clic en el archivo .idl FileView y seleccionar el option.nbsp de compilación; Esto producirá la biblioteca de tipos.
Haga clic e&n la clase de ClassView y seleccione Implementar conexión punto.... Un cuadro de diálogo mostrará una o más fichas de biblioteca de tipo y cada ficha mostrará las interfaces para ese tipo de library.nbsp; Si elige una interfaz y haga clic en Aceptar, se le:
Generar un archivo de encabezado con una clase de proxy de eventos que implementa el código que hará que las llamadas Vary saliente para el evento.
Agregue una entrada en el mapa de puntos de conexión.
Agregar un comentario y # error (diciéndole que sustituir el parámetro nulo con la dirección de la dispID) a la lista de parámetros de IProvideClassInfo2Impl.
Si &no han construido su biblioteca de tipos, verá una lista de todos los typelibs en su computer.nbsp; Sólo debe utilizar uno de estos otros typelibs para definir el punto de conexión si desea implementar la exacta misma interfaz saliente que se encuentra en otra biblioteca. Si crea una biblioteca de tipos sin interfaz de fuente por defecto en la coclase, el cuadro de diálogo mostrará un mensaje de advertencia no informes interfaz adecuada (origen) en la biblioteca de tipos.
Para aplicar un punto de conexión de biblioteca de tipos de otro objeto
En ClassView, pulse el botón derecho en una clase que implementa una macro BEGIN_COM_MAP y seleccione el punto de conexión de implementar en el menú contextual.
En el cuadro de diálogo Implementar punto de conexión , haga clic en Agregar Typelib....
Seleccio&ne uno de los libraries.nbsp de tipo disponible; Después de seleccionar la biblioteca de tipos, verá una lista de las interfaces disponibles en la biblioteca de tipos.
Elija uno o más de las interfaces disponibles y haga clic en Aceptar.
Edite el archivo .idl para cualquiera:
Copien el archivo idl para el objeto cuyo origen de eventos se está utilizando la interfaz dispinterface.
Utilice la instrucción importlib en la biblioteca de tipo.
Este es un ejemplo de un archivo .idl que utiliza el punto de conexión del control Circ.
[
UUID(38BBFD91-7575-11D1-8C3C-0060083E866C),
Version(1.0),
helpstring ("16190 1.0 tipo biblioteca")
]
Biblioteca MY16190Lib
{
importlib("stdole32.TLB");
importlib("stdole2.TLB");
importlib("D:\\ATL25\\samples\\circ\\circ.TLB"); / / **** Añadir esta línea [
UUID(38BBFD9E-7575-11D1-8C3C-0060083E866C),
helpstring ("clase de Atl16190Ctl")
]
coclase Atl16190Ctl
{
interfaz [predeterminada] IAtl16190Ctl;
[predeterminado, de origen] dispinterface _CircEvents; / / **** y éste
};
}