使用 IConnectionPoint

当客户端具有指向连接点的指针时,它可以执行以下通过 IConnectionPoint 表示的操作:

  • 首先,IConnectionPoint::GetConnectionInterface 检索连接点支持的传出接口 IID。 与 IEnumConnectionPoints 结合使用时,此方法允许客户端检查可连接对象上支持的所有传出接口的 IID。
  • 其次,客户端可以通过 IConnectionPoint::GetConnectionPointContainer 方法从连接点导航回可连接的对象的 IConnectionPointContainer 接口。
  • 第三,客户端最感兴趣的方法是 IConnectionPoint::AdviseIConnectionPoint::Unadvise。 当客户端希望将自己的接收器对象连接到可连接对象时,客户端会将接收器的 IUnknown 指针(或同一对象上的任何其他接口指针)传递给 Advise。 连接点将查询接收器中预期的特定传出接口。 如果该接口在接收器上可用,则连接点将存储接口指针。 从这一点开始,直到调用 Unadvise,可连接对象将在事件发生时通过此接口调用接收器。 若要断开接收器与连接点的连接,客户端会将从 Advise 建议返回的键传递给 Unadvise 方法。 Unadvise 必须在接收器接口上调用 Release
  • 最后,客户端可以请求连接点枚举通过 IConnectionPoint::EnumConnections 建立的所有连接。 此方法创建一个枚举器对象(具有单独的引用计数),并返回指向它的IEnumConnections 指针。 当不再需要枚举器时,客户端必须调用 Release。 此外,枚举器返回一系列 CONNECTDATA 结构,每个连接对应一个结构。 每个结构都使用接收器的 IUnknown 指针以及最初从 Advise 返回的连接键描述一个连接。 使用这些接收器接口指针完成后,客户端必须在 CONNECTDATA 结构中返回的每个指针上调用 Release

可连接对象接口