階層ビューアーの作成

適用対象: Outlook 2013 | Outlook 2016

階層ビューアーは、フォルダーとアドレス帳のコンテナー階層テーブルを表示するために使用されるユーザー インターフェイス コンポーネントです。 階層ビューアーは、階層のメンバーをさまざまなレベルで表示し、各レベルをオンデマンドで拡張および縮小できます。

container プロパティ (PR_DEPTH (PidTagDepth) は、階層メンバーを表示するレベルを制御します。 最上位のアドレス帳コンテナーまたはフォルダーを表すエントリには、 PR_DEPTH プロパティが 0 に設定されています。 このプロパティの値は、シーケンシャル レベルのエントリに対して順番にインクリメントされます。 つまり、ユーザーが展開する最上位のコンテナーを選択すると、 PR_DEPTH が 1 に設定されているすべてのコンテナーが表示されます。 ユーザーがこれらのサブコンテナーの 1 つを展開すると、 PR_DEPTH が 2 に設定されたコンテナーが表示されます。

階層ビューアーは、さまざまな深度をサポートします。 ビューアーを 1 つまたは 2 つのレベルのみに制限することも、拡張階層を表示することが優先される場合は、複数のレベルをサポートすることもできます。

アドレス帳には、アドレス帳の最上位コンテナーの階層ビューアーが用意されています。

アドレス帳階層テーブルにアクセスするには

  1. アドレス帳のルート コンテナーを開くには、NULL エントリ識別子を渡して IAddrBook::OpenEntry を呼び出します。

  2. ルート コンテナーの IMAPIContainer::GetHierarchyTable メソッドを呼び出して、MAPI アドレス帳の階層テーブルにアクセスします。

既定のメッセージ ストアの階層テーブルにアクセスするには

  1. IMAPISession::GetMsgStoresTable を呼び出して、メッセージ ストア テーブルにアクセスします。

  2. SPropertyRestriction 構造体を使用して制限を構築し、テーブルを、PR_DEFAULT_STORE (PidTagDefaultStore) プロパティが TRUE に設定されている行のみに制限します。

  3. IMAPITable::FindRow を呼び出し、SPropertyRestriction を渡して、既定のメッセージ ストアを表す行を見つけます。

  4. IMAPISession::OpenEntry を呼び出し、メッセージ ストア テーブルの既定のメッセージ ストアの行から PR_ENTRYID (PidTagEntryId) プロパティを渡します。

  5. メッセージ ストアの IMAPIProp::GetProps メソッドを呼び出して 、PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId) プロパティを取得します。

  6. メッセージ ストアの IMsgStore::OpenEntry メソッドを呼び出し、 PR_IPM_SUBTREE_ENTRYID プロパティを渡して、メッセージ ストアの IPM サブツリーのルート フォルダーを開きます。

  7. IPM ルート フォルダーの IMAPIContainer::GetHierarchyTable メソッドを呼び出して、その階層テーブルにアクセスします。