ECLCommNotify クラス

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

アプリケーションが ZIEWin 接続上の通信の接続/切断イベントの通知を受けられるようにするには、ECLCommNotify クラスを使用します。接続/切断イベントは、ホスト・システムに対して 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 オブジェクトでは、通信イベントの通知用に 1 つしか通知オブジェクトを登録できません。その ECLConnection オブジェクト用に通知オブジェクトが既に登録されて いる場合、ECLConnection::RegisterCommEvent からエラーがスローされます。