Реализация расширенного поиска
Область применения: Outlook 2013 | Outlook 2016
Некоторые контейнеры адресной книги поддерживают расширенную возможность поиска, которая позволяет клиентам выполнять поиск по свойствам, отличным от PR_DISPLAY_NAME (PidTagDisplayName). Для поддержки расширенного поиска поставщик должен реализовать специальный контейнер, доступный через свойство PR_SEARCH (PidTagSearch) других контейнеров. PR_SEARCH содержит объект контейнера, предоставляющий доступ к таблице отображения, описывающей диалоговое окно, используемое для ввода и изменения расширенных условий поиска.
Поддержка расширенного поиска
Определите свойство для каждого критерия поиска.
В разделе кода в методе IMAPIProp::OpenProperty контейнера, который обрабатывает свойство PR_SEARCH :
Убедитесь, что клиент запрашивает интерфейс IMAPIContainer . Если запрашивается недопустимый интерфейс, сбой и возврат MAPI_E_INTERFACE_NOT_SUPPORTED.
Создайте объект поиска, поддерживающий интерфейс IMAPIContainer .
На этом этапе будет выполнен вызов метода IMAPIProp::OpenProperty контейнера поиска для получения свойства PR_DETAILS_TABLE (PidTagDetailsTable). Поставщик должен предоставить таблицу отображения, как правило, через вызов BuildDisplayTable, которая описывает диалоговое окно расширенного поиска контейнера.
MAPI отображает диалоговое окно поиска, позволяющее пользователю ввести соответствующие условия. Когда пользователь завершит работу, MAPI вызывает метод IMAPIProp::SetProps контейнера для хранения условий поиска.
Будет выполнен вызов, чтобы запросить таблицу содержимого контейнера поиска. Заполните таблицу содержимого всеми записями в контейнере, которые соответствуют условиям.