フォーム ビューアーの実装

適用対象: Outlook 2013 | Outlook 2016

フォーム ビューアーには、メッセージ サイト、ビュー アドバイズ シンク、ビュー コンテキストの 3 つのオブジェクトが含まれます。 これらの各オブジェクトを使用すると、フォーム サーバーとそのフォームと対話できます。

メッセージ サイトは 、IMAPIMessageSite : IUnknown インターフェイスを実装し、メッセージの移動、保存、削除、新しいメッセージの作成、新しいフォーム サーバーの起動などのタスクでフォーム サーバーを支援するオブジェクトです。 メッセージ サイトは、さまざまなサービス プロバイダーに関するクライアントの状態に関する情報を取得するためにフォームによって使用されます。 たとえば、フォームはメッセージ サイトを使用して、現在のメッセージ ストア、メッセージ、またはフォルダーへのポインターを取得できます。

IMAPIMessageSite インターフェイスには、次の 2 種類のメソッドがあります。

  • オブジェクトを形成するための情報を提供するメソッド。

  • メッセージを操作するメソッド。

オブジェクトを形成するための情報を提供するメソッドは、簡単に実装できます。 IMAPIMessageSite::GetSiteStatus を除くすべてのケースで、各メソッドで必要な情報を既に使用できる必要があります。

メッセージを操作するメソッドは、通常のユーザー インターフェイスを介してトリガーされたかのように動作する必要があります。 たとえば、フォーム オブジェクトが IMAPIMessageSite::NewMessage メソッドを呼び出す場合、ユーザーが通常のユーザー インターフェイスで新しいカスタム メッセージを作成することを選択したかのように動作します。 通常、この動作を生成するコマンドは、 ComposeOpenReplyReply to All RecipientsForward です

ビュー コンテキストは、 IMAPIViewContext : IUnknown インターフェイスを実装し、フォーム サーバーに現在のメッセージのコンテキストを提供するオブジェクトであり、サーバーはフォルダー内の次または前のメッセージに簡単に切り替えることができます。 フォームは、情報を共有するためにビュー コンテキストを使用します。 ビュー コンテキスト オブジェクトを使用すると、フォームで次のことができます。

  • 通知のためにクライアントに登録します。

  • フォルダー内の次または前のメッセージをアクティブにします。

  • 印刷情報を取得します。

  • クライアントの状態を取得します。

  • メッセージのテキスト バージョンを保存するために使用できるストリームを取得します。

IMAPIMessageSite : IUnknown インターフェイスのメソッドと同様に、IMAPIViewContext のメソッドは、ビュー コンテキストに関連するユーザー アクションとクライアント機能と関連付けられます。 たとえば、ビュー コンテキストは、次または前のメッセージのアクティブ化、フォルダーの内容の並べ替え、フォルダーの内容のフィルター処理に関連します。

ユーザーがこれらの機能をアクティブ化するためのメカニズムは重要ではなく、それらの機能のセマンティクスが IMAPIViewContext インターフェイス内のメソッドに適切にマップされていることだけが重要です。

ビュー アドバイズ シンクは、 IMAPIViewAdviseSink を実装するオブジェクトです。IUnknown インターフェイスを実装し、ビューアーに影響を与えるフォーム サーバーからの通知を処理し、フォームとフォーム ビューアーが連携できるように支援します。 詳細については、「 フォーム通知の送受信」を参照してください。