Compartir a través de


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.

Vea también

IMAPIFolder : IMAPIContainer

MFCMAPI como un ejemplo de c�digo