コントロール オブジェクトの実装
適用対象: Outlook 2013 | Outlook 2016
コントロール オブジェクト( IMAPIControl : IUnknown インターフェイスをサポートするオブジェクト)は、MAPI ダイアログ ボックスに表示されるボタンに機能を追加するためにプロバイダーによって実装されます。 コントロール オブジェクトは、ボタンに対してのみ実装できます。
IMAPIControl には、 GetLastError、 GetState、 Activate の 3 つのメソッドがあります。
MAPI は GetState を呼び出して、ボタンを無効にするかどうかを判断します。 GetState は、次の状況で呼び出されます。
ボタンが表示されるダイアログ ボックスが最初に表示される場合。
ボタンに対して表示テーブル通知が発行されたとき。
ユーザーがボタンを操作できない場合は lpulState パラメーターの内容をMAPI_DISABLEDに設定し、ユーザーが操作できる場合はMAPI_ENABLEDします。
ユーザーがボタンをクリックすると、MAPI は アクティブ化を呼び出します。 アクティブ化 すると、ボタンに関連付けられているタスクが実行されます。 このタスクは、ダイアログ ボックスの表示やプロパティの更新など、プロバイダーに適したものにすることができます。 ユーザーがタスクを取り消したためにタスクが失敗した場合は、MAPI_E_USER_CANCELを返します。 その他のエラーの原因については、適切なエラー値を返します。
タスクが成功し、ダイアログ ボックスの別のコントロールに反映されるプロパティの変更にリンクされている場合は、 ITableData::HrNotify を呼び出します。 HrNotify は、TABLE_NOTIFICATION構造体の変更されたプロパティの PR_CONTROL_ID (PidTagControlId) プロパティで表示テーブル通知を発行するために呼び出 されます 。 構造体に新しいプロパティ値を配置しないでください。代わりに、 IMAPIProp::GetProps が呼び出されたときにそれを返します。 通常、表示テーブル通知を使用してコントロールを無効または有効にすることはできませんが、ボタンで使用できます。 MAPI は、通知に応答するように変更されたコントロールを更新します。
MAPI は、Activate がMAPI_E_USER_CANCEL以外のエラーを返すときに、コントロールの GetLastError メソッドを呼び出します。 GetLastError がMAPIERROR 構造体に拡張エラー情報を配置し、パラメーターの内容で返す場合the_lppMAPIError_、MAPI はユーザーに対して表示します。