IMAPIFolder::DeleteFolder

适用于:Outlook 2013 | Outlook 2016

删除子文件夹。

HRESULT DeleteFolder(
  ULONG_PTR cbEntryID,
  LPENTRYID lpEntryID,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

参数

cbEntryID

[in] lpEntryID 参数指向的条目标识符中的字节计数。

lpEntryID

[in]指向要删除的子文件夹的条目标识符的指针。

ulUIParam

[in]进度指示器的父窗口的句柄。 除非 ulFlags 参数中设置了 FOLDER_DIALOG 标志,否则忽略 ulUIParam 参数。

lpProgress

[in]指向显示进度指示器的进度对象的指针。 如果在 lpProgress 中传递 NULL,则消息存储提供程序使用 MAPI 进度对象实现显示进度指示器。 除非在 ulFlags 中设置了 FOLDER_DIALOG 标志,否则忽略 lpProgress 参数。

ulFlags

[in]控制子文件夹删除的标志的位掩码。 可以设置以下标志:

DEL_FOLDERS

应删除 lpEntryID 指向的子文件夹的所有子文件夹。

DEL_MESSAGES

应删除 lpEntryID 指向的子文件夹中的所有消息。

DELETE_HARD_DELETE

永久删除文件夹。

FOLDER_DIALOG

操作继续时,应显示进度指示器。

返回值

S_OK

已成功删除指定的文件夹。

MAPI_E_HAS_FOLDERS

要删除的子文件夹包含子文件夹,并且未设置DEL_FOLDERS标志。 未删除子文件夹。

MAPI_E_HAS_MESSAGES

要删除的子文件夹包含消息,并且未设置DEL_MESSAGES标志。 未删除子文件夹。

MAPI_W_PARTIAL_COMPLETION

调用成功,但并非所有条目都已成功删除。 返回此警告时,应将调用处理为成功。 若要测试此警告,请使用 HR_FAILED 宏。 有关详细信息,请参阅 使用宏进行错误处理

备注

IMAPIFolder::D eleteFolder 方法删除子文件夹。 默认情况下, DeleteFolder 仅对空文件夹运行,但可以通过设置两个标志在非空文件夹上成功使用它:DEL_FOLDERS和DEL_MESSAGES。 只能删除在 DeleteFolder 调用上同时设置DEL_FOLDERS和DEL_MESSAGES标志的空文件夹或文件夹。 DEL_FOLDERS允许删除文件夹的所有子文件夹;DEL_MESSAGES可删除文件夹的所有邮件。

MFCMAPI 程序允许在文件夹软删除和文件夹硬删除之间进行选择。 Exchange Server 2019 也不在专用存储中实现文件夹软删除,并且将专用存储中的文件夹删除请求 (cf.[ropOpenFolder] 请求) ,就像设置了DELETE_HARD_DELETE一样。

针对实现者的说明

当删除操作涉及多个文件夹时,请尽可能完全地为每个文件夹执行操作。 有时,要删除的文件夹之一不存在,或者已被移动或复制到其他位置。 除非发生无法控制的故障(例如内存不足、磁盘空间不足或消息存储损坏),否则不要过早停止操作。

给调用方的说明

在以下条件下,应使用这些返回值。

Condition 返回值
DeleteFolder 已成功删除每个邮件和子文件夹。 S_OK
DeleteFolder 无法成功删除每个邮件和子文件夹。 MAPI_W_PARTIAL_COMPLETION或MAPI_E_NOT_FOUND
DeleteFolder 无法完成。 除 MAPI_E_NOT_FOUND 之外的任何错误值

DeleteFolder 无法完成时,不要假定未完成任何工作。 在遇到错误之前,DeleteFolder 可能已经能够删除一个或多个消息和子文件夹。

如果无法删除一个或多个子文件夹, DeleteFolder 将返回MAPI_W_PARTIAL_COMPLETION或MAPI_E_NOT_FOUND,具体取决于消息存储提供程序的实现。

MFCMAPI 引用

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

文件 函数 Comment
MsgStoreDlg.cpp
CMsgStoreDlg::OnDeleteSelectedItem
MFCMAPI 使用 IMAPIFolder::D eleteFolder 方法删除文件夹。

另请参阅

IMAPIFolder : IMAPIContainer

MFCMAPI 代码示例