IMAPIContainer::GetHierarchyTable
适用于:Outlook 2013 | Outlook 2016
返回指向容器层次结构表的指针。
HRESULT GetHierarchyTable(
ULONG ulFlags,
LPMAPITABLE FAR * lppTable
);
参数
ulFlags
[in]控制如何在表中返回信息的标志的位掩码。 可以设置以下标志:
CONVENIENT_DEPTH
使用多个级别的容器填充层次结构表。 如果未设置CONVENIENT_DEPTH,则层次结构表仅包含容器的直接子容器。
MAPI_DEFERRED_ERRORS
GetHierarchyTable 可以成功返回,可能是在表提供给调用方之前。 如果该表不可用,则进行后续表调用可能会引发错误。
MAPI_UNICODE
请求以 Unicode 格式返回包含字符串数据的列。 如果未设置MAPI_UNICODE标志,则应以 ANSI 格式返回字符串。
SHOW_SOFT_DELETES
显示当前标记为软删除的项目,即它们处于已删除项保留时间阶段。
lppTable
[out]指向指向层次结构表的指针的指针。
返回值
S_OK
已成功检索层次结构表。
MAPI_E_BAD_CHARWIDTH
已设置MAPI_UNICODE标志且实现不支持 Unicode,或者未设置MAPI_UNICODE且实现仅支持 Unicode。
MAPI_E_NO_SUPPORT
容器没有子容器,不能提供层次结构表。
备注
IMAPIContainer::GetHierarchyTable 方法返回指向容器层次结构表的指针。 层次结构表保存有关容器中子容器的摘要信息。 文件夹层次结构表保存有关子文件夹的信息;通讯簿层次结构表保存有关子通讯簿容器和通讯组列表的信息。
某些容器可能没有子容器。 这些容器从 GetHierarchyTable 的实现中返回MAPI_E_NO_SUPPORT。
设置CONVENIENT_DEPTH标志后,层次结构表中的每一行还包括 PR_DEPTH (PidTagDepth) 属性作为列。 PR_DEPTH 指示每个容器相对于实现表的容器的级别。 实现容器的直接子容器的深度为 0,零深度容器中的子容器位于深度 1 处,依此类。 随着级别的层次结构的加深, PR_DEPTH 的值按顺序增加。
有关层次结构表中必需列和可选列的完整列表,请参阅 层次结构表。
针对实现者的说明
如果支持容器的层次结构表,则还必须执行以下操作:
支持调用容器的 IMAPIProp::OpenProperty 方法以打开 PR_CONTAINER_HIERARCHY (PidTagContainerHierarchy) 属性。
从调用容器的 IMAPIProp::GetPropList 或 IMAPIProp::GetProps 方法返回PR_CONTAINER_HIERARCHY。
给调用方的说明
字符串和二进制内容表列可以截断。 通常,提供程序返回 255 个字符。 由于无法事先知道表是否包含截断的列,因此假设如果列的长度为 255 字节或 510 字节,则列被截断。 如果需要,始终可以直接从 对象检索截断列的完整值,方法是使用对象的入口标识符将其打开,然后调用 IMAPIProp::GetProps 方法。
根据提供程序的实现,限制和排序操作可以应用于整个字符串或该字符串的截断版本。 此外,不保证存储提供程序遵循为层次结构表指定的排序顺序集 SSortOrderSet 。
MFCMAPI 引用
有关 MFCMAPI 示例代码,请参阅下表。
文件 | 函数 | Comment |
---|---|---|
HierarchyTableTreeCtrl.cpp |
CHierarchyTableTreeCtrl::GetHierarchyTable |
CHierarchyTableTreeCtrl 类使用 GetHierarchyTable 获取要显示在树视图控件中的层次结构表。 |