实现高级搜索
适用于: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 方法来存储搜索条件。
将调用 以请求搜索容器的内容表。 使用容器中与条件匹配的所有条目填充内容表。