Windows ユーザー向けに、各 FRE connectable object では 2 種類の接続ポイントが提供されます。1 つは dispatch インターフェイスを使用するもの、もう 1 つは IUnknown から派生したインターフェイスを使用するものです。dispatch インターフェイスは Visual Basic などの環境で自動的に使用されるよう設計されており、vtbl ベースのインターフェイスは C++ での使用に適しています。
dispinterface は Windows 固有です。
| オブジェクト | Callback インターフェイス (Dispinterface) |
|---|---|
| FRDocument | IFRDocumentEvents (DIFRDocumentEvents) |
| FRPages | IFRPagesEvents (DIFRPagesEvents) |
| FRPage | IFRPageEvents (DIFRPageEvents) |
| ImageDocument | IImageDocumentEvents (DIImageDocumentEvents) |
Linux および macOS 向け
Linux および macOS 向け
通知ソースへの接続と切断には、2 つのグローバル メソッドを使用します。これらのメソッドには、
object 引数として Connectable Objects のいずれかを、callback 引数として対応する Callback インターフェイスを渡す必要があります。必要なインターフェイスを実装し、そのインターフェイスを実装したオブジェクトを、対応する Connectable Objects に対して “advise” する必要があります。ここでは、FRDocument オブジェクトを例として使用します。- IFRDocumentEvents インターフェイスを実装します。これは IUnknown インターフェイスから派生しているため、クライアント オブジェクトでは IUnknown メソッドも実装する必要があります。
- その後、CFRDocumentCallback クラスを使用して FRDocument オブジェクトから通知を受け取ることができます。このオブジェクトを通知ソースに advise します (エラー処理は省略しています) 。
このトピックの残りは、Windows 版 FRE のユーザーに適用されます。
Visual Basic .NET
Visual Basic .NET
Connectable Objects を WithEvents で宣言し、対応する Callback インターフェイスのメソッドを実装するだけです。また、イベントに関連付けるイベント ハンドラーを明示的に指定する必要もあります。FRDocument オブジェクトでは、手順は次のようになります。
- FRDocument オブジェクトを WithEvents で宣言します。
- 次の例のように、Sub 内で DIFRDocumentEvents dispinterface の必要なメソッドを実装します。
- 実装したイベント ハンドラーをイベント ソースに接続し、FRDocument オブジェクトを使用して処理を実行したら、ハンドラーを切断します。
C++
C++
C++ では、必要なインターフェイスを実装し、接続ポイントを取得して、そのインターフェイスを実装するオブジェクトを対応する connectable objects に「advise」する必要があります。ここでは FRDocument オブジェクトを例に説明します。
- IFRDocumentEvents インターフェイスを実装します。これは IUnknown インターフェイスから派生しているため、クライアントオブジェクトでは IUnknown のメソッドも実装する必要があります。
- その後、CFRDocumentEventsListener クラスを使用して FRDocument オブジェクトから通知を受け取ることができます。このオブジェクトを通知ソースに advise します (エラー処理は省略しています) 。
C#
C#
C# の手順は Visual Basic .NET の場合と似ています。コールバックインターフェイスの必要なメソッドを実装し、実装したイベントハンドラーをイベントソースに接続する必要があります。ここでは FRDocument オブジェクトを例に説明します。
- IFRDocumentEvents インターフェイスの必要なメソッドを実装します。
- イベントハンドラーをイベントソースに接続し、FRDocument オブジェクトで処理を実行した後、ハンドラーを切断します。
