テーブルの表示

適用対象: Outlook 2013 | Outlook 2016

表示テーブルでは、特定の種類のダイアログ ボックスを表示する方法について説明します。1 つ以上のタブ付きプロパティ ページは、1 つ以上のプロパティの表示と編集専用です。 すべての表示テーブルに関連付けられているのは、 IMAPIProp : IUnknown インターフェイスの実装です。 IMAPIProp 実装では、ダイアログ ボックスに表示されるプロパティ データが保持されます。

表示テーブル内の行は、ダイアログ ボックスに表示されるコントロールまたはユーザー インターフェイス オブジェクトを表します。 MAPI は、静的な値を持つコントロールと、ユーザーが変更できる動的な値を持つコントロールの多くの種類を定義します。 ほとんどのコントロールは、 IMAPIProp 実装で維持されるプロパティに関連付けることができます。 ユーザーが変更可能なコントロールの値を変更すると、対応するプロパティが更新されます。

サービス プロバイダーは、表示テーブルと IMAPIProp インターフェイスを実装します。 表示テーブルの作成は、スクリプト言語を使用したプログラムの記述に似ています。 サービス プロバイダーは、次の方法で表示テーブルを作成できます。

  • BuildDisplayTable 関数の呼び出し。

    • または-
  • テーブル データ オブジェクト ( ITableData: IUnknown インターフェイスをサポートするオブジェクト) を使用して、表示テーブルを直接設定するカスタム コードを含めます。

BuildDisplayTable 関数は、表示テーブル構造の情報とダイアログ ボックス リソースのビジュアル要素を組み合わせて、表示テーブルの行を構築します。 関数は 、IMAPITable : IUnknown インターフェイス実装へのポインターを返し、要求された場合は ITableData インターフェイス実装へのポインターを返します。

BuildDisplayTable を使用して表示テーブルを作成するのは簡単で、表示のビジュアル要素が変更された場合のメンテナンスが容易になります。 ただし、 BuildDisplayTable を使用しないサービス プロバイダーは、 ITableData のメソッドを使用するカスタム コードを含む表示テーブルを作成できます。 たとえば、プロパティ ページの既存のテンプレート構造を持つサービス プロバイダーは、 BuildDisplayTable を使用するのではなく、カスタム コードを作成したい場合があります。

サービス プロバイダーが表示テーブルのプロパティ インターフェイスを実装する方法はさまざまです。 たとえば、次の環境です。:

実装の種類は、表示するデータの特性と責任あるサービス プロバイダーによって異なります。 たとえば、2 つの編集コントロール内のデータといずれかのコントロールの間に暗黙的な関係がある場合、 IMAPIProp の実装では、もう一方のコントロールの値を適切に変更する必要があります。

表示テーブルには、必要な列セットに次のプロパティがあります。

PR_XPOS (PidTagXCoordinate)
PR_YPOS (PidTagYCoordinate)
PR_DELTAX (PidTagDeltaX)
PR_DELTAY (PidTagDeltaY)
PR_CONTROL_TYPE (PidTagControlType)
PR_CONTROL_FLAGS (PidTagControlFlags)
PR_CONTROL_STRUCTURE (PidTagControlStructure)
PR_CONTROL_ID (PidTagControlId)

PR_XPOSPR_YPOS コントロールの左上隅の X 座標と Y 座標を指定します。 水平方向の単位は、ダイアログベースの幅単位の 1/4 です。垂直単位は、ダイアログベースの高さ単位の 1/8 です。 Windows では、現在のシステム フォントの高さと幅から、現在のダイアログの基本単位が計算されます。 座標は、プロパティ ページ領域の原点を基準にしています。 プロパティ ページのサイズは、約 200 x 180 のダイアログ ユニットに制限されます。

PR_DELTAXPR_DELTAY は、コントロールの幅と高さです。 これらは ULONG 値です。 幅の単位は、ダイアログの基本幅単位の 1/4 です。高さの単位は、ダイアログベースの高さ単位の 1/8 です。 座標は、コントロールの原点を基準にしています。

他の 4 つのプロパティは、コントロールのさまざまな特性を表します。 PR_CONTROL_TYPE コントロールの種類を示します。 MAPI では、それぞれ異なる属性セットを持つ 12 種類のコントロールを定義します。 これらの属性 については、flags プロパティPR_CONTROL_FLAGSで説明されています。 属性の例としては、コントロールが編集可能か必須かなどがあります。

コントロール構造 PR_CONTROL_STRUCTUREには、特定の種類のコントロールに関連する情報が含まれています。 コントロールの種類はそれぞれ異なる構造で記述されます。 たとえば、編集コントロールは DTBLEDIT 構造体で記述されます。 DTBLEDIT 構造体には、コントロールに配置できる文字の数と特定の種類の文字を一覧表示するメンバーと、コントロールに表示される値を持つプロパティを識別するプロパティ タグが含まれています。 PR_CONTROL_STRUCTURE はバイナリ プロパティとして格納されます。

コントロール識別子 (PR_CONTROL_ID) は、表示テーブルで説明されているダイアログ ボックス内のコントロールを一意に識別します。 PR_CONTROL_IDは、表示テーブルを作成するために BuildDisplayTable によって使用される DTCTL 構造体の lpbNotif および cbNotif メンバーに配置された値から設定されます。 MAPI は表示テーブルを結合する場合があるため、 PR_CONTROL_ID の識別子は常に一意である必要があります。 通常、プロバイダーは GUID 構造を PR_CONTROL_ID に割り当てて一意性を確保します。 PR_CONTROL_ID プロパティは、表示テーブル通知が生成されるときに、TABLE_NOTIFICATION構造体に含まれます。

表示テーブルの詳細については、「テーブルの 実装の表示 」および「 テーブルの表示に関する通知」を参照してください。

関連項目

MAPI テーブル