IABContainer::CopyEntries
适用于:Outlook 2013 | Outlook 2016
复制一个或多个条目,通常是向用户或通讯组列表发送消息。
HRESULT CopyEntries(
LPENTRYLIST lpEntries,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
参数
lpEntries
[in]指向 ENTRYLIST 结构的数组的指针,该数组包含要复制的条目的条目标识符。
ulUIParam
[in]此方法显示的任何对话框或窗口的父窗口的句柄。 如果在 ulFlags 参数中设置了AB_NO_DIALOG标志,则 ulUIParam 参数必须为零。
lpProgress
[in]指向显示进度指示器的进度对象的指针,或 NULL。 如果 lpProgress 为 NULL,则应使用 MAPI 通过 IMAPISupport::D oProgressDialog 方法提供的进度对象来显示进度指示器。 如果在 ulFlags 中设置了AB_NO_DIALOG标志,则忽略 lpProgress 参数。
ulFlags
[in]控制复制操作的执行方式的标志的位掩码。 可以设置以下标志:
AB_NO_DIALOG
禁止显示进度指示器。 如果未设置此标志,则会显示进度指示器。
CREATE_CHECK_DUP_LOOSE
指示应执行松散级别的重复项检查。 松散重复项检查的实现特定于提供程序。 例如,提供程序可以将松散匹配定义为具有相同显示名称的任何两个条目。
CREATE_CHECK_DUP_STRICT
指示应执行严格级别的重复项检查。 严格重复项检查的实现特定于提供程序。 例如,提供程序可以将严格匹配定义为具有相同显示名称和消息地址的任何两个条目。
CREATE_REPLACE
指示如果确定新条目是重复项,则应替换现有条目。
返回值
S_OK
复制操作成功。
MAPI_W_PARTIAL_COMPLETION
复制操作总体成功,但无法复制一个或多个条目。 返回此值时,应将调用处理为成功。 若要测试此值,请使用 HR_FAILED 宏。 有关详细信息,请参阅 使用宏进行错误处理。
备注
IABContainer::CopyEntries 方法从同一容器或不同容器复制条目。 对 CopyEntries 的 调用在功能上等效于对要复制的每个条目进行以下调用:
用于创建新条目的 IABContainer::CreateEntry 方法。
IMAPIProp::GetProps 方法用于从要复制的条目读取属性。
用于将属性写入新条目的 IMAPIProp::SetProps 方法。
新条目的 IMAPIProp::SaveChanges 方法用于执行保存。
新条目的 IUnknown::Release 方法用于发布容器的引用。
针对实现者的说明
支持 IABContainer::CopyEntries 方法的所有容器都必须可修改。 在其 PR_CONTAINER_FLAGS (PidTagContainerFlags) 属性中设置容器AB_MODIFIABLE标志,以指示该容器可修改。
必须支持所有标志;但是,这些标志的解释和使用是特定于实现的,也就是说,你可以确定CREATE_CHECK_DUP_LOOSE和CREATE_CHECK_DUP_STRICT标志的语义在实现的上下文中的含义。 如果无法或无法确定条目是否为重复项,请始终允许复制该条目。
如果设置了CREATE_REPLACE标志,则无论是否设置了CREATE_CHECK_DUP_LOOSE或CREATE_CHECK_DUP_STRICT,以及条目是否为重复项,始终复制条目。
如果未设置CREATE_REPLACE并设置CREATE_CHECK_DUP_STRICT,检查重复项。 如果某个条目被确定为重复项,请不要复制该条目。
无需支持CREATE_REPLACE;不支持CREATE_REPLACE意味着可以放心地忽略它并始终执行复制。
仅当无法复制非重复数据删除项时,才返回警告MAPI_W_PARTIAL_COMPLETION。
给调用方的说明
使用CREATE_CHECK_DUP_LOOSE和CREATE_CHECK_DUP_STRICT标志向提供程序指示你希望容器如何执行重复项检查。 如果需要添加一个条目,无论它是否是重复项,要么不设置其中任一标志,要么设置CREATE_REPLACE标志。 CREATE_REPLACE表示你不在乎条目是否重复;你始终希望它替换原始条目。