ECLStartNotify クラス

ECLStartNotify は、抽象基本クラスです。アプリケーションは、このクラスの インスタンスを直接作成することはできません。アプリケーションでこのクラスを使用するには、ECLStartNotify から派生した 独自のクラスを定義しなければなりません。アプリケーションは、 その派生クラス内に NotifyEvent() メンバー関数を実装しなければなりません。また、 オプションで NotifyError() および NotifyStop() メンバー関数を実装することも できます。

アプリケーションが ZIEWin 接続の開始および停止の通知を受けられるようにするには、ECLStartNotify クラスを使用します。スタート・ストップ・イベントは、任意の方法 (ECLConnMgr スタート・ストップ・メソッドを含む) で ZIEWin 接続 (ウィンドウ) が開始または停止されるたびに生成されます。

アプリケーションがスタート・ストップ・イベントの通知を受けるには、 次に示すステップを実行しなければなりません。
  1. ECLStartNotify から派生したクラスを定義します。
  2. その派生クラスを採用し、NotifyEvent() メンバー関数を実装します。
  3. オプションで、NotifyError() または NotifyStop() 関数 (あるいはその両方) を 実装します。
  4. 派生クラスのインスタンスを作成します。
  5. そのインスタンスを ECLConnMgr::RegisterStartEvent() 関数で登録します。

ここに示された例は、それがどのように行われるかを例示しています。上記のステップを完了すると、その後、接続が開始または停止されるたびに アプリケーション NotifyEvent() メンバー関数が呼び出されます。この関数には、接続ハンドルを提供する 2 つのパラメーターと BOOL スタート・ストップ標識が 渡されます。アプリケーションは、他の ECL 関数の呼び出しを 含め、NotifyEvent() プロシージャーで必要な任意の関数を実行できます。アプリケーションは、接続の停止を阻止することはできないことに注意してください。通知は、セッションが停止された後に行われます。

イベントの生成時にエラーが検出された場合、ECLErr オブジェクトを 使用して NotifyError() メンバー関数が呼び出されます。エラーの特性に応じて、 エラー後にイベントが続けて生成されるかどうかが決まります。イベント生成が終了するとき (エラーか、ECLConnMgr::UnregisterStartEvent の呼び出しか、 または ECLConnMgr オブジェクトの破棄のいずれかが原因で) には、NotifyStop() メンバー関数が呼び出されます。イベント通知が終了するときには、NotifyStop() メンバー関数が常に呼び出され、 アプリケーション・オブジェクトの登録が抹消されます。

アプリケーションが NotifyError() メンバー関数の実装を行わない場合、 デフォルトの実装が使われます (単純なメッセージ・ボックスがユーザーに対して表示されます)。アプリケーションがデフォルトの振る舞いをオーバーライドするには、 アプリケーションの派生クラス内に NotifyError() 関数を実装します。同様に、アプリケーションがこの関数を提供しない場合、 デフォルトの NotifyStop() 関数が使われます (デフォルトの振る舞いでは何も行われません)。

またアプリケーションは、派生したクラス用に自身のコンストラクターおよび デストラクターを任意で提供できることに注意してください。これが便利なのは、 アプリケーションが特定のインスタンス別データをそのクラス内に保管してから、 その情報をコンストラクター上のパラメーターとして渡したい場合です。例えば、アプリケーションにおいて、スタート・ストップ・イベントが発生したら アプリケーション・ウィンドウにメッセージをポストしたい場合があります。アプリケーションは、ウィンドウ・ハンドルをグローバル変数として定義する (このハンドルを、NotifyEvent() 関数に見えるようにするため) 代わりに、 ウィンドウ・ハンドルを受け取ってクラス・メンバーのデータ域に保管する クラス用のコンストラクターとして定義することができます。

アプリケーションは、イベントを受け取るために通知オブジェクトを 登録しているかぎり、そのオブジェクトを破棄してはなりません。

実装上の制約事項: 現在、 ECLConnMgr オブジェクトでは、1 つのスタート・ストップ・イベント通知に対して 1 つしか通知オブジェクトを登録できません。その ECLConnMgr オブジェクト用に、既に 通知オブジェクトが登録されている場合、ECLConnMgr::RegisterStartEvent から エラーがスローされます。