フォーム通知の送受信

適用対象: Outlook 2013 | Outlook 2016

フォーム通知は、MAPI で使用され、フォームからビューアーへの通信と、ビューアーからフォームへの通信の両方を容易にします。

フォームは、次のいずれかのイベントが発生すると、ビューアーに通知を送信します。

  • フォームは閉じられています。

  • 新しいメッセージがフォームに読み込まれます。

  • 保存操作が完了しました。

  • メッセージが送信されます。

これらの各イベントの種類は、 IMAPIViewAdviseSink の特定のメソッドに対応しています。IUnknown は、フォーム ビューアーが実装する必要があるインターフェイスの 1 つです。 イベントが発生すると、フォームはビューアーのアドバイズ シンクで対応する IMAPIViewAdviseSink メソッドを呼び出します。 たとえば、ビューアーが表示に含める必要がある新しいメッセージが届くと、フォームは IMAPIViewAdviseSink::OnNewMessage メソッドを呼び出します。

ビューを実装すると、ビューアーにとって意味のある方法でシンクがアドバイスされます。標準の実装はありません。 たとえば、 OnNewMessage では、現在のフォルダーのコンテンツ テーブルのビューを更新して、新しく到着したメッセージを含めることができます。 IMAPIViewAdviseSink::OnSubmitted では、送信されたメッセージ イベントを受信したときに呼び出されるメソッドで、送信されたメッセージを [送信済みアイテム] フォルダーにコピーできます。

フォームは、フォームに影響を与える変更が発生したとき、および新しいメッセージを読み込むときに、ビューアーから通知を受け取ります。 フォームに通知するには、 IMAPIFormAdviseSink: IMAPIFormAdviseSink::OnChange または IMAPIFormAdviseSink::OnActivateNext のいずれかのメソッドを呼び出します。 OnChange を呼び出して状態を伝えます。 たとえば、新しいメッセージが届いたときにフォームにフォルダー内の最後の項目が表示されている場合は、VCSTATUS_NEXT フラグを設定して OnChange を呼び出して、フォームに次の項目があることを通知します。

OnActivateNext を呼び出して、新しいメッセージが表示される場合と表示できない可能性があることをフォームに通知します。 メッセージのメッセージ クラスを OnActivateNext に渡します。

クライアント アプリケーションへのフォーム オブジェクトによる通知は、クライアント アプリケーションの IMAPIViewAdviseSink インターフェイスによって処理されます。 詳細については、「 IMAPIViewAdviseSink : IUnknown」を参照してください。