IMAPIFolder::DeleteFolder
Hace referencia a: Outlook 2013 | Outlook 2016
Elimina una subcarpeta.
HRESULT DeleteFolder(
ULONG_PTR cbEntryID,
LPENTRYID lpEntryID,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
Parameters
cbEntryID
[in] Recuento de bytes en el identificador de entrada al que apunta el parámetro lpEntryID .
lpEntryID
[in] Puntero al identificador de entrada de la subcarpeta que se va a eliminar.
ulUIParam
[in] Identificador de la ventana primaria del indicador de progreso. El parámetro ulUIParam se omite a menos que se establezca la marca FOLDER_DIALOG en el parámetro ulFlags .
lpProgress
[in] Puntero a un objeto de progreso que muestra un indicador de progreso. Si se pasa NULL en lpProgress, el proveedor del almacén de mensajes muestra un indicador de progreso mediante la implementación del objeto de progreso MAPI. El parámetro lpProgress se omite a menos que la marca de FOLDER_DIALOG se establezca en ulFlags.
ulFlags
[in] Máscara de bits de marcas que controla la eliminación de la subcarpeta. Se pueden establecer las siguientes marcas:
DEL_FOLDERS
Se deben eliminar todas las subcarpetas de la subcarpeta a la que apunta lpEntryID .
DEL_MESSAGES
Se deben eliminar todos los mensajes de la subcarpeta a la que apunta lpEntryID .
DELETE_HARD_DELETE
Quita permanentemente la carpeta.
FOLDER_DIALOG
Se debe mostrar un indicador de progreso mientras continúa la operación.
Valor devuelto
S_OK
La carpeta especificada se ha eliminado correctamente.
MAPI_E_HAS_FOLDERS
La subcarpeta que se va a eliminar contiene subcarpetas y no se ha establecido la marca de DEL_FOLDERS. No se eliminaron las subcarpetas.
MAPI_E_HAS_MESSAGES
La subcarpeta que se va a eliminar contiene mensajes y no se ha establecido la marca de DEL_MESSAGES. No se eliminó la subcarpeta.
MAPI_W_PARTIAL_COMPLETION
La llamada se realizó correctamente, pero no todas las entradas se eliminaron correctamente. Cuando se devuelve esta advertencia, la llamada debe controlarse correctamente. Para probar esta advertencia, use la macro HR_FAILED . Para obtener más información, vea Uso de macros para el control de errores.
Comentarios
El método IMAPIFolder::D eleteFolder elimina una subcarpeta. De forma predeterminada, DeleteFolder solo funciona en carpetas vacías, pero puede usarla correctamente en carpetas no vacías estableciendo dos marcas: DEL_FOLDERS y DEL_MESSAGES. Solo se pueden eliminar las carpetas o carpetas vacías que establecen las marcas DEL_FOLDERS y DEL_MESSAGES en la llamada DeleteFolder . DEL_FOLDERS permite quitar todas las subcarpetas de la carpeta; DEL_MESSAGES permite quitar todos los mensajes de la carpeta.
El programa MFCMAPI permite elegir entre la eliminación temporal de carpetas y la eliminación rígida de carpetas. Exchange Server 2019 tampoco implementa la eliminación temporal de carpetas en almacenes privados y trata las solicitudes de eliminación de carpetas dentro de almacenes privados (cf. la solicitud [ropOpenFolder]) como si se hubiera establecido DELETE_HARD_DELETE.
Notas a los implementadores
Cuando la operación de eliminación implique más de una carpeta, realice la operación lo más completa posible para cada carpeta. A veces, una de las carpetas que se van a eliminar no existe o se ha movido o copiado en otro lugar. No detenga la operación prematuramente a menos que se produzca un error que esté fuera de su control, como quedarse sin memoria, quedarse sin espacio en disco o daños en el almacén de mensajes.
Notas para los llamadores
Espere estos valores devueltos en las condiciones siguientes.
Condition | Valor devuelto |
---|---|
DeleteFolder ha eliminado correctamente todos los mensajes y subcarpetas. | S_OK |
DeleteFolder no pudo eliminar correctamente todos los mensajes y subcarpetas. | MAPI_W_PARTIAL_COMPLETION o MAPI_E_NOT_FOUND |
DeleteFolder no se pudo completar. | Cualquier valor de error excepto MAPI_E_NOT_FOUND |
Cuando DeleteFolder no se pueda completar, no suponga que no se ha realizado ningún trabajo. DeleteFolder podría haber podido eliminar uno o varios de los mensajes y subcarpetas antes de encontrar el error.
Si no se pueden eliminar una o varias subcarpetas, DeleteFolder devuelve MAPI_W_PARTIAL_COMPLETION o MAPI_E_NOT_FOUND, en función de la implementación del proveedor del almacén de mensajes.
Referencia de MFCMAPI
Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.
Archivo | Función | Comment |
---|---|---|
MsgStoreDlg.cpp |
CMsgStoreDlg::OnDeleteSelectedItem |
MFCMAPI usa el método IMAPIFolder::D eleteFolder para eliminar carpetas. |