プロパティ シートの実装

適用対象: Outlook 2013 | Outlook 2016

プロパティ シートは、オブジェクトのプロパティを表示するためのダイアログ ボックスです。 プロパティは読み取り専用で、ユーザーがプロパティを表示することのみを有効にするか、読み取り/書き込みを有効にして、ユーザーが変更を加えることができます。 プロパティ シートには、pages と呼ばれる 1 つ以上の重複する子ウィンドウが含まれています。 各ページには、関連するプロパティのグループを設定するためのコントロール ウィンドウが含まれています。 ユーザーは、対応するページをプロパティ シートの前景に移動するタブを選択して、ページ間を移動します。

サービス プロバイダーは、メッセージ サービスの構成に関連する最小限のプロパティ セットを表示するプロパティ シートを実装する必要があります。 これらのメッセージ サービス プロパティの変更を許可する場合は、コントロール パネルなどのクライアント アプリケーションのユーザーが変更を行えるようにするか、プログラムで変更を実装できます。 他の種類のプロパティを表示および編集するためのプロパティ シートの実装は省略可能です。

通常、次の状況ではプロパティ シートを表示する必要があります。

  • クライアントが状態オブジェクトの IMAPIStatus::SettingsDialog メソッドを呼び出す場合。

  • MAPI がプロバイダー オブジェクトのログオン メソッドを呼び出す場合。

  • MAPI がプロバイダーのメッセージ サービスのエントリ ポイント関数を呼び出す場合。

トランスポート プロバイダーは、メッセージ オプションに関連するプロパティを表示するプロパティ シートも実装し、アドレス帳プロバイダーは、メッセージング ユーザーと配布リスト、高度な検索条件、および新しいユーザーを入力するためのテンプレートに関する詳細情報を表示および編集するためのプロパティ シートを実装します。

次の 3 つの手法のいずれかを使用して、プロパティ シートを作成できます。

  • 任意のダイアログ ボックスと同様に、手動で。

  • Windows SDKで提供されるプロパティ シート共通コントロールを使用します。

  • MAPI 表示テーブルを使用する。

プロバイダーは、最後のオプションを選択する必要があります (表示テーブルを使用してプロパティ シートを作成します)。 これは、Windows ユーザー インターフェイスを操作する必要がないため、最も簡単なオプションです。

メッセージ サービスのプロパティの表示テーブルから構築されたプロパティ シートを実装するには、次の手順を使用します。

  1. IMAPISupport::OpenProfileSection を呼び出して、現在のプロファイルのセクションを開きます。 MAPIUID または NULL を渡して、プロバイダーのプロファイル セクションを開きます。

  2. CreateIProp を呼び出して、プロパティ データ オブジェクトを作成します。

  3. プロファイル セクションの IMAPIProp::CopyTo メソッドを呼び出して、セクションのすべてのプロパティをプロパティ データ オブジェクトにコピーします。

  4. 表示テーブルを作成するには、プロパティ シートに表示するコントロールを記述する 1 つ以上の DTPAGE 構造体を作成し、 BuildDisplayTable 関数を呼び出すか、カスタム コードを実装します。

  5. IMAPISupport::D oConfigPropsheet を呼び出して、コピーされたプロパティを持つプロパティ シートを表示します。 プロパティ データ オブジェクトへのポインターを lpConfigData パラメーターとして渡し、表示テーブルへのポインターを lpDisplayTable パラメーターとして渡します。 このプロパティ シートの既定のアクセス モードをオーバーライドする場合は、読み取り専用プロパティを表す表示テーブル内の各コントロールのDT_EDITABLE フラグを設定しないでください。

  6. すべての変更がプロパティ シートで行われた場合は、プロパティ データ オブジェクトの IMAPIProp::CopyTo メソッドを呼び出して、変更されたプロパティをプロファイル セクションにコピーし直します。

表示テーブルの概要については、「テーブルの 表示」を参照してください。

表示テーブルの詳細については、「 表示テーブルの実装」を参照してください。

コントロールの実装の詳細については、「 コントロール オブジェクトの実装」を参照してください。

表示テーブルのリスト ボックスでユーザーが選択したコントロールのインデックスを取得するには、ユーザーが [OK] または [適用] をクリックするまで待 ちます。 この時点で、選択した項目のエントリ識別子は、DTBLLBX 構造体の ulPRSetProperty メンバーによって指定されたプロパティの値として IMAPIProp : IUnknown インターフェイスに書き戻されます。

リスト ボックスに項目を追加または削除する必要がある場合は、表示テーブルと IMAPISupport::D oConfigPropsheet メソッドを使用できません。 代わりに、comdlg32.dll ファイルに含まれる Win32 プロパティ シート API を使用してプロパティ シートを実装することを検討してください。

関連項目

MAPI サービス プロバイダー