IMAPIContainer::GetHierarchyTable
Область применения: Outlook 2013 | Outlook 2016
Возвращает указатель на таблицу иерархии контейнера.
HRESULT GetHierarchyTable(
ULONG ulFlags,
LPMAPITABLE FAR * lppTable
);
Параметры
ulFlags
[в] Битовая маска флагов, управляющая тем, как информация возвращается в таблице. Можно задать следующие флаги:
CONVENIENT_DEPTH
Заполняет таблицу иерархии контейнерами с нескольких уровней. Если CONVENIENT_DEPTH не задано, таблица иерархии содержит только непосредственные дочерние контейнеры контейнера.
MAPI_DEFERRED_ERRORS
GetHierarchyTable может успешно возвращать данные, возможно, до того, как таблица будет доступна вызывающей. Если таблица недоступна, последующий вызов таблицы может вызвать ошибку.
MAPI_UNICODE
Запрашивает возврат столбцов, содержащих строковые данные, в формате Юникода. Если флаг MAPI_UNICODE не задан, строки должны быть возвращены в формате ANSI.
SHOW_SOFT_DELETES
Показывает элементы, которые в настоящее время помечены как обратимо удаленные, то есть находятся на этапе хранения удаленных элементов.
lppTable
[out] Указатель на указатель на таблицу иерархии.
Возвращаемое значение
S_OK
Таблица иерархии успешно получена.
MAPI_E_BAD_CHARWIDTH
Либо был установлен флаг MAPI_UNICODE и реализация не поддерживает Юникод, либо MAPI_UNICODE не задан и реализация поддерживает только Юникод.
MAPI_E_NO_SUPPORT
Контейнер не имеет дочерних контейнеров и не может предоставить таблицу иерархии.
Замечания
Метод IMAPIContainer::GetHierarchyTable возвращает указатель на таблицу иерархии контейнера. Иерархическая таблица содержит сводную информацию о дочерних контейнерах в контейнере. Таблицы иерархии папок содержат сведения о вложенных папках; Таблицы иерархии адресных книг содержат сведения о контейнерах дочерних адресных книг и списках рассылки.
Некоторые контейнеры могут не иметь дочерних контейнеров. Эти контейнеры возвращают MAPI_E_NO_SUPPORT из своих реализаций GetHierarchyTable.
При установке флага CONVENIENT_DEPTH каждая строка в таблице иерархии также содержит свойство PR_DEPTH (PidTagDepth) в качестве столбца. PR_DEPTH указывает уровень каждого контейнера относительно контейнера, реализующего таблицу. Непосредственные дочерние контейнеры реализации находятся на нулевой глубине, дочерние контейнеры в контейнерах нулевой глубины находятся на глубине 1 и т. д. Значения PR_DEPTH увеличиваться последовательно по мере углубления иерархии уровней.
Полный список обязательных и необязательных столбцов в таблицах иерархии см. в разделе Таблицы иерархии.
Примечания для исполнителей
Если вы поддерживаете таблицу иерархии для контейнера, необходимо также выполнить следующие действия:
Поддержка вызова метода IMAPIProp::OpenProperty контейнера для открытия свойства PR_CONTAINER_HIERARCHY (PidTagContainerHierarchy).
Возвращает PR_CONTAINER_HIERARCHY из вызова методов IMAPIProp::GetPropList или IMAPIProp::GetProps контейнера.
Примечания для вызывающих методов
Столбцы таблицы строкового и двоичного содержимого могут быть усечены. Как правило, поставщики возвращают 255 символов. Так как вы не можете заранее узнать, содержит ли таблица усеченные столбцы, предположим, что столбец усечен, если длина столбца составляет 255 или 510 байт. При необходимости можно получить полное значение усеченного столбца непосредственно из объекта, используя его идентификатор записи, чтобы открыть его, а затем вызвать метод IMAPIProp::GetProps .
В зависимости от реализации поставщика ограничения и операции сортировки могут применяться ко всей строке или к усеченной версии этой строки. Кроме того, поставщики хранилища не гарантируют соблюдение набора порядка сортировки SSortOrderSet , указанного для таблиц иерархии.
Справочные материалы по MFCMAPI
Пример кода MFCMAPI указан в приведенной ниже таблице.
Файл | Функция | Comment |
---|---|---|
HierarchyTableTreeCtrl.cpp |
CHierarchyTableTreeCtrl::GetHierarchyTable |
Класс CHierarchyTableTreeCtrl использует GetHierarchyTable для получения таблиц иерархии для отображения в элементе управления представлением в виде дерева. |