ECLCommNotify 类

ECLCommNotify 是抽象基类。应用程序无法直接创建此类的实例。要使用此类,应用程序必须定义其自己派生自 ECLCommNotify 的类。应用程序必须在其派生类中实现 NotifyEvent() 成员函数。它还可以选择性地实现 NotifyError() 和 NotifyStop() 成员函数。

ECLCommNotify 类用于允许应用程序在 ZIEWin 连接上发生通信连接/断开连接事件时收到通知。每当 ZIEWin 连接(窗口)与主机系统连接或断开连接时,都会生成连接/断开连接事件。

要收到通信连接/断开连接事件的通知,应用程序必须执行以下步骤:
  1. 定义派生自 ECLCommNotify 的类。
  2. 实现派生类并实现 NotifyEvent() 成员函数。
  3. (可选)实现 NotifyError() 函数和/或 NotifyStop() 函数。
  4. 创建派生类的实例。
  5. 使用 ECLConnection::RegisterCommEvent() 函数注册实例。

显示的示例演示了如何执行此操作。完成上述步骤后,每次连接的通信链路连接或断开与主机的连接时,都将调用应用程序 NotifyEvent() 成员函数。

如果在事件生成过程中检测到错误,则使用 ECLErr 对象调用 NotifyError() 成员函数。发生错误后,可能会继续生成事件,也可能不会继续生成,具体取决于错误的性质。当事件生成终止时(由于错误,通过调用 ECLConnection::UnregisterCommEvent,或由于破坏 ECLConnection 对象),将调用 NotifyStop() 成员函数。但是,事件通知会被终止,NotifyStop() 成员函数总是被调用,并且应用程序对象会被注销。

如果应用程序不提供 NotifyError() 成员函数的实现,则使用缺省实现(向用户显示简单的消息框)。应用程序可以通过在应用程序派生类中实现 NotifyError() 函数来覆盖缺省行为。同样,如果应用程序不提供此函数(缺省行为是不执行任何操作),则使用缺省 NotifyStop() 函数。

请注意,应用程序还可以选择为派生类提供自己的构造函数和析构函数。如果应用程序要在类中存储某些特定于实例的数据,并将该信息作为参数传递到构造函数上,则此选项非常有用。例如,当发生通信事件时,应用程序可能希望将消息发布到应用程序窗口。应用程序不是将窗口句柄定义为全局变量(因此它对 NotifyEvent() 函数可见),而是可以为类定义构造函数,该类接受窗口句柄并将其存储在类成员数据区域中。

应用程序在注册接收事件时不能破坏通知对象。

实现限制:当前,ECLConnection 对象仅允许注册一个通知对象用于通信事件通知。如果已为该 ECLConnection 对象注册了通知对象,则 ECLConnection::RegisterCommEvent 将抛出错误。