IPaperSink 方法

COPaper 公开 IConnectionPointContainer 接口,以便客户端可以连接到 COPaper,以便接收 COPaper 中发生的指定事件的通知。 通过公开此接口,COPaper 将成为可连接的对象。 客户端可以为此接口调用 QueryInterface ,并使用它获取对象的连接点。 关联的 StoClien 示例中介绍了客户参与此计划。

基本上,客户端以具有接收器接口的接收器对象的形式实现所谓的接收器。 客户端将接收器正确连接到 COPaper 实例后,接收器接口从 COPaper 接收传出事件通知调用。 客户端使用由 COPaper 管理的连接点对象建立连接。 单个可连接的 COM 对象上可以有多个连接点。 在 StoServe 示例中,COPaper 只有一个连接点,用于处理绘图纸张事件。

任意数量的客户端可以连接到单个连接点。 COPaper 中的CONNPOINT_PAPERSINK连接点维护一组可在运行时动态增长的连接。 有关 COPaper 可连接对象支持的完整详细信息编码在文件 CONNECT 中。H 和 CONNECT。CPP 和 将不在这里介绍。 该构造与 CONSERVE 代码示例中研究的内容非常相似。

StoClien 客户端为预期在 COPaper 中找到的连接点实现适当的接收器对象。 在 COPaper 的上下文中, StoClien 实现的重要接收器对象公开 IPaperSink 接口。 这是 COPaper 用于向 StoClien 通知 COPaper 中各种事件的传出接口。

下面是 IPAPER 中 IPaperSink 中的方法的摘要。\INC 同级目录中的 H。

方法 说明
已锁定 客户已控制并锁定了纸张。
已解锁 客户放弃了对纸张的控制。
已加载 客户端已从其自己的复合文件加载纸张内容。
保存时间 客户端已将纸张内容保存到其自己的复合文件中。
InkStart 客户端开始对纸张进行彩色墨迹绘制序列。
InkDraw 客户端将墨迹数据点放在纸张表面。
InkStop 客户端已将其墨迹绘图序列停止到纸张。
删除 客户端已从纸张中擦除所有墨迹数据。
调整 客户端已调整纸张的大小。

 

这些方法在很大程度上是一目了然的。 尽管接收器必须以某种方式实现所有这些方法,但许多方法作为存根实现,并且不在 StoServe/StoClien 示例中使用。

这些示例中使用的一个重要方法是 Loaded 方法。 当客户端告知 COPaper 从文件加载新绘图时,它需要一种在加载新数据时通知客户端的方法。 为此,COPaper 在客户端接收器上调用 IPaperSink::Loaded 。 然后,客户端可以调用 IPaper::Redraw ,以请求 COPaper 将新数据播放到客户端。 重绘会导致重新绘制客户端显示器中加载的绘图。 加载完成后,新加载的绘图将自动显示在客户端提供的窗口中。

有关此 IPaper 方法与 IPaperSink 的连接的完整信息,请参阅 IPaper::Redraw。

IPaperSink 方法 InkStartInkDrawInkStop 用于将单个墨迹数据包发送回客户端。 在接收时,客户端以与最初将其发送到 COPaper 时相同的方式在显示器中绘制它们。 上述逻辑已足够通用,允许多个客户端侦听同一个CONNPOINT_PAPERSINK连接点。 如果通用 COPaper 实例由这些客户端共享,则它们可以通过连接到此连接点来显示相同的绘图。