IMAPISupport::CopyFolder
适用于:Outlook 2013 | Outlook 2016
将文件夹从其当前父文件夹复制或移动到另一个父文件夹。
HRESULT CopyFolder(
LPCIID lpSrcInterface,
LPVOID lpSrcFolder,
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
LPVOID lpDestFolder,
LPSTR lpszNewFolderName,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
参数
lpSrcInterface
[in]指向接口标识符的指针 (IID) ,该接口表示用于访问要复制或移动的文件夹的父文件夹的接口。
lpSrcFolder
[in]指向要复制或移动的文件夹的父文件夹的指针。
cbEntryID
[in] lpEntryID 指向的条目标识符中的字节计数。
lpEntryID
[in]指向要复制或移动的文件夹的条目标识符的指针。
lpInterface
[in]保留;必须为 NULL。
lpDestFolder
[in]指向要接收要复制或移动的文件夹的文件夹的指针。
lpszNewFolderName
[in]指向复制或移动的文件夹名称的指针;否则为 NULL,指示复制或移动的文件夹应与源文件夹具有相同的名称, (lpEntryID) 指向的文件夹。
ulUIParam
[in]进度指示器对话框和相关窗口的窗口句柄。 除非 ulFlags 参数中设置了 FOLDER_DIALOG 标志,否则忽略 ulUIParam 参数。
lpProgress
[in]指向显示进度指示器的进度对象的指针。 如果在 lpProgress 中传递 NULL,则消息存储提供程序使用 MAPI 进度对象实现显示进度指示器。 除非在 ulFlags 中设置了 FOLDER_DIALOG 标志,否则忽略 lpProgress 参数。
ulFlags
[in]控制如何完成复制或移动操作的标志的位掩码。 可以设置以下标志:
COPY_SUBFOLDERS
应复制或移动文件夹的所有子文件夹。 如果未为复制操作设置COPY_SUBFOLDERS,则仅复制 由 lpEntryID 标识的文件夹。 使用移动操作时,无论是否设置了标志,COPY_SUBFOLDERS行为都是默认值。
FOLDER_DIALOG
请求显示进度指示器。
FOLDER_MOVE
应移动而不是复制文件夹。 如果未设置FOLDER_MOVE,则会复制文件夹。
MAPI_UNICODE
文件夹的名称采用 Unicode 格式。 如果未设置MAPI_UNICODE标志,则文件夹的名称采用 ANSI 格式。
返回值
S_OK
已成功复制或移动文件夹。
MAPI_E_COLLISION
要移动或复制的文件夹的名称与目标文件夹中的子文件夹的名称相同。 邮件存储提供程序要求文件夹名称是唯一的。 操作在未完成的情况下停止。
MAPI_W_PARTIAL_COMPLETION
调用成功,但并非所有条目都已成功复制。 返回此警告时,应将调用处理为成功。 若要测试此警告,请使用 HR_FAILED 宏。 有关详细信息,请参阅 使用宏进行错误处理。
备注
IMAPISupport::CopyFolder 方法为消息存储提供程序支持对象实现。 消息存储提供程序可以在 IMAPIFolder::CopyFolder 的实现中调用 IMAPISupport::CopyFolder ,以将单个文件夹从一个父文件夹复制或移动到另一个父文件夹。
IMAPISupport::CopyFolder 将复制或移动的文件夹添加为目标文件夹的子文件夹。
给调用方的说明
IMAPISupport::CopyFolder 允许同时重命名和移动文件夹,以及复制或移动受影响文件夹的子文件夹。 若要复制或移动嵌套在复制或移动文件夹中的所有子文件夹,请在 ulFlags 中传递COPY_SUBFOLDERS标志。
在以下条件下,应使用以下返回值:
Condition | 返回值 |
---|---|
CopyFolder 已成功复制或移动文件夹及其所有子文件夹(如果适用)。 | S_OK |
CopyFolder 无法成功复制或移动所有文件夹。 | MAPI_W_PARTIAL_COMPLETION |
CopyFolder 无法完成。 | 任何错误值 |
如果 CopyFolder 返回错误值,请不要假定未完成任何工作。 在 CopyFolder 发生故障之前,可以复制或移动一个或多个文件夹。