フォーム サーバー コードの記述
適用対象: Outlook 2013 | Outlook 2016
フォーム サーバーは次のように考えることができます。
標準の Windows メッセージ ポンプ メカニズムを使用して、インターフェイスを表示し、Windows メッセージを処理する Win32 プログラム。
クラス ファクトリを OLE に登録し、OLE オートメーション メソッドによってアクティブ化するオブジェクト。
他の MAPI コンポーネントとの対話の MAPI 規則に従う MAPI オブジェクト。
コードでは、これらの広範な要件の 3 つすべてを同時に処理する必要があります。
フォーム サーバーのクラス ファクトリの登録の詳細については、Windows SDKの「COM および ActiveX オブジェクト サービス」セクションを参照してください。 Windows メッセージの処理とインターフェイスの表示は、MAPI フォームに関する特別な要件を持たない標準的な Windows プログラミング手法です。 ここでも、Windows SDKには Windows プログラミングに関する詳細が含まれています。 このドキュメントには、必要な MAPI フォーム インターフェイスと省略可能な MAPI フォーム インターフェイスを実装するために知っておくべきことが含まれています。これは、MAPI フォーム マネージャーとメッセージング クライアント アプリケーションを中心に、他の MAPI コンポーネントとの対話に関する MAPI 規則に従います。
フォーム サーバーを実装するときに使用できるインターフェイスはすべて、OLE 基本クラス IUnknown から直接または間接的に派生します。 つまり、これらのインターフェイスのすべての実装には 、QueryInterface、 AddRef、 および Release メソッドが必要です。 複数の継承を使用して必要なすべてのインターフェイスを独自の新しいクラスに実装すると、多くの作業を節約できます。そのため、使用するすべてのインターフェイスで、必要な IUnknown メソッドの 1 つの実装を共有できます。 詳細については、 IUnknown::AddRef、 IUnknown::QueryInterface、および IUnknown::Release メソッドを参照してください。 これらの方法の MAPI フォーム サーバーに関する特別な考慮事項はありません。
すべてのフォーム サーバーに対して MAPI フォーム インターフェイスのすべてが必須であるわけではありませんが、特定のインターフェイスのメソッドは必須です。 つまり、特定のインターフェイスを実装する場合は、インターフェイス内のすべてのメソッドを実装する必要があります。 これは、メッセージ トランスポートなどの他の MAPI コンポーネントの状況とは異なります。 幸いなことに、MAPI フォーム インターフェイスのメソッドは比較的簡単なので、それらのすべてを実装しても開発者に大きな負担はかからありません。
MAPI フォーム インターフェイスは、フォーム サーバーの作成に使用される開発ツールの種類に依存しません。 これにより、さまざまな開発ツールを使用してフォームを作成できます。 唯一の要件は、すべてのフォーム サーバーが必要な MAPI フォーム インターフェイスをサポートする必要があるということです。
フォームに関連するすべての MAPI インターフェイスが、すべてのフォーム サーバーで必要なわけではありません。 省略可能なインターフェイスを使用すると、ほとんどのフォーム サーバーで必要のない高度なフォーム関数を実装できます。 次の表に、インターフェイス、インターフェイスの目的、実装する必要があるかどうかを示します。
インターフェイス | 説明 | 状態 |
---|---|---|
IMAPIForm : IUnknown |
クライアントがフォーム サーバーの読み込み、フォーム動詞の実行、フォーム サーバーのシャットダウンに使用するプライマリ インターフェイス。 これは、フォーム オブジェクトが実装するインターフェイスに関する他の OLE コンポーネントに通知するために使用される OLE IUnknown から派生したインターフェイスでもあります。 | 必須 |
IPersistMessage : IUnknown |
フォーム オブジェクトにメッセージを読み込み、メッセージを保存するときに使用します。 | 必須 |
IMAPIFormAdviseSink : IUnknown |
メッセージング クライアントの状態を追跡し、フォーム オブジェクトがフォルダー内の次のメッセージまたは以前のメッセージを表示できるかどうかを確認するために、フォーム オブジェクトによって使用されます。 | 省略可能 |
IClassFactory |
OLE クラス ファクトリ メカニズムに準拠するためにフォーム オブジェクトによって使用される OLE クラス ファクトリ インターフェイス。 | 必須 |
IMAPIFormFactory : IUnknown |
フォーム サーバーで複数の種類のフォームがサポートされている場合に使用されます。 この場合、 IMAPIFormFactory インターフェイスを使用すると、クライアント アプリケーションは、フォーム サーバーが実装する必要がある複数の IClassFactory インターフェイス (フォーム サーバーがサポートするフォームの種類ごとに 1 つ) にアクセスできます。 | 省略可能 |