IMAPIContainer::GetSearchCriteria

适用于:Outlook 2013 | Outlook 2016

获取容器的搜索条件。

HRESULT GetSearchCriteria(
  ULONG ulFlags,
  LPSRestriction FAR * lppRestriction,
  LPENTRYLIST FAR * lppContainerList,
  ULONG FAR * lpulSearchState
);

参数

ulFlags

[in]控制传入字符串类型的标志的位掩码。 可以设置以下标志:

MAPI_UNICODE

传入的字符串采用 Unicode 格式。 如果未设置MAPI_UNICODE标志,则字符串采用 ANSI 格式。

lppRestriction

[out]指向定义搜索条件 的 SRestriction 结构的指针的指针。 如果客户端应用程序在 lppRestriction 参数中传递 NULL, 则 GetSearchCriteria 不会返回 SRestriction 结构。

lppContainerList

[out]指向表示要包含在搜索中的容器的条目标识符数组的指针的指针。 如果客户端在 lppContainerList 参数中传递 NULL, 则 GetSearchCriteria 不会返回条目标识符数组。

lpulSearchState

[out]指向标志位掩码的指针,这些标志用于指示搜索的当前状态。 如果客户端在 lpulSearchState 参数中传递 NULL, 则 GetSearchCriteria 不返回任何标志。 可以设置以下标志:

SEARCH_FOREGROUND

相对于其他搜索,搜索应以高优先级运行。 如果未设置此标志,则相对于其他搜索,搜索将按正常优先级运行。

SEARCH_REBUILD

搜索处于其操作的 CPU 密集型模式,尝试查找符合条件的消息。 如果未设置此标志,搜索操作的 CPU 密集型部分将结束。 仅当搜索处于活动状态时,此标志才有意义, (也就是说,SEARCH_RUNNING标志设置为) 。

SEARCH_RECURSIVE

搜索在指定的容器及其所有子容器中查找匹配条目。 如果未设置此标志,则只会搜索最后一次调用 IMAPIContainer::SetSearchCriteria 方法中显式包含的容器。

SEARCH_RUNNING

搜索处于活动状态,并且正在更新容器的内容表,以反映消息存储或通讯簿中的更改。 如果未设置此标志,则搜索处于非活动状态,并且内容表是静态的。

返回值

S_OK

已成功获取搜索条件。

MAPI_E_BAD_CHARWIDTH

已设置MAPI_UNICODE标志且实现不支持 Unicode,或者未设置MAPI_UNICODE且实现仅支持 Unicode。

MAPI_E_NOT_INITIALIZED

从未为容器建立搜索条件。

备注

IMAPIContainer::GetSearchCriteria 方法获取支持搜索的容器(通常是搜索结果文件夹)的搜索条件。 通过调用容器的 IMAPIContainer::SetSearchCriteria 方法创建搜索条件。

针对实现者的说明

只有在通讯簿容器提供与 PR_SEARCH (PidTagSearch) 属性关联的高级搜索功能时,通讯簿容器才可能需要支持 GetSearchCriteria。 有关如何实现通讯簿容器的高级搜索功能的详细信息,请参阅 实现高级搜索

给调用方的说明

完成 lppRestrictionlppContainerList 参数指向的数据结构后,请调用 MAPIFreeBuffer 一次,以便释放每个结构。

MFCMAPI 引用

有关 MFCMAPI 示例代码,请参阅下表。

文件 函数 Comment
HierarchyTableDlg.cpp
CHierarchyTableDlg::OnEditSearchCriteria
MFCMAPI 使用 IMAPIContainer::GetSearchCriteria 方法从要显示的文件夹中获取搜索条件。

另请参阅

IMAPIContainer::SetSearchCriteria

IMAPIFolder::CreateFolder

MAPIFreeBuffer

PidTagSearch 规范属性

IMAPIContainer : IMAPIProp

MFCMAPI 代码示例