ECLStartNotify 类

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

ECLStartNotify 类用于允许应用程序在 ZIEWin 连接启动和停止时收到通知。无论何时以任何方式(包括 ECLConnMgr 启动/停止方法)启动或停止 ZIEWin 连接(窗口),都会生成启动/停止事件。

要收到启动/停止事件的通知,应用程序必须执行以下步骤:
  1. 定义派生自 ECLStartNotify 的类。
  2. 实现派生类并实现 NotifyEvent() 成员函数。
  3. (可选)实现 NotifyError() 和/或 NotifyStop() 函数。
  4. 创建派生类的实例。
  5. 使用 ECLConnMgr::RegisterStartEvent() 函数注册实例。

显示的示例演示了如何执行此操作。完成上述步骤后,每次启动或停止连接时,都将调用应用程序 NotifyEvent() 成员函数。会向该函数传递两个参数,以提供连接的句柄和 BOOL 启动/停止指示符。应用程序可以执行 NotifyEvent() 过程中所需的任何函数,包括调用其他 ECL 函数。请注意,应用程序不能阻止连接停止;通知是在会话已停止后发出的。

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

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

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

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

实现限制:目前,ECLConnMgr 对象仅允许为一个启动/停止事件通知注册一个通知对象。如果已为该 ECLConnMgr 对象注册了通知对象,则 ECLConnMgr::RegisterStartEvent 将抛出错误。