フォーム通知の送受信
適用対象: 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」を参照してください。