Uso de IConnectionPoint
Cuando el cliente tiene un puntero a un punto de conexión, puede realizar las siguientes operaciones como se expresa a través de IConnectionPoint:
- En primer lugar, IConnectionPoint::GetConnectionInterface recupera la interfaz saliente IID compatible con el punto de conexión. Cuando se usa junto con IEnumConnectionPoints, este método permite al cliente examinar los IID de todas las interfaces salientes admitidas en el objeto conectable.
- En segundo lugar, un cliente puede navegar desde el punto de conexión hasta la interfaz IConnectionPointContainer del objeto conectable a través del método IConnectionPoint::GetConnectionPointContainer .
- En tercer lugar, los métodos más interesantes para el cliente son IConnectionPoint::Advise e IConnectionPoint::Unadvise. Cuando un cliente desea conectar su propio objeto receptor al objeto conectable, el cliente pasa el puntero IUnknown del receptor (o cualquier otro puntero de interfaz en el mismo objeto) a Aviso. El punto de conexión consulta el receptor para la interfaz saliente específica que se espera. Si esa interfaz está disponible en el receptor, el punto de conexión almacena el puntero de interfaz. Desde este punto hasta que se llama a Unadvise , el objeto conectable realizará llamadas al receptor a través de esta interfaz cuando se produzcan eventos. Para desconectar el receptor del punto de conexión, el cliente pasa una clave devuelta de Advise al método Unadvise . Unadvise debe llamar a Release en la interfaz del receptor.
- Por último, un cliente puede pedir a un punto de conexión que enumere todas las conexiones que existen a través de IConnectionPoint::EnumConnections. Este método crea un objeto enumerador (con un recuento de referencias independiente) que devuelve un puntero IEnumConnections a él. El cliente debe llamar a Release cuando el enumerador ya no sea necesario. Además, el enumerador devuelve una serie de estructuras CONNECTDATA , una para cada conexión. Cada estructura describe una conexión mediante el puntero IUnknown del receptor, así como la clave de conexión que se devolvió originalmente de Advise. Cuando haya terminado con estos punteros de interfaz receptor, el cliente debe llamar a Release en cada puntero devuelto en una estructura CONNECTDATA .
Temas relacionados