IMAPIFolder::DeleteFolder
Aplica-se a: Outlook 2013 | Outlook 2016
Exclui uma subpasta.
HRESULT DeleteFolder(
ULONG_PTR cbEntryID,
LPENTRYID lpEntryID,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
Parâmetros
cbEntryID
[in] A contagem de bytes no identificador de entrada apontada pelo parâmetro lpEntryID .
Lpentryid
[in] Um ponteiro para o identificador de entrada da subpasta a ser excluído.
ulUIParam
[in] Um identificador para a janela pai do indicador de progresso. O parâmetro ulUIParam é ignorado, a menos que o sinalizador FOLDER_DIALOG seja definido no parâmetro ulFlags .
lpProgress
[in] Um ponteiro para um objeto de progresso que exibe um indicador de progresso. Se NULL for passado em lpProgress, o provedor do repositório de mensagens exibirá um indicador de progresso usando a implementação do objeto de progresso MAPI. O parâmetro lpProgress é ignorado, a menos que o sinalizador FOLDER_DIALOG seja definido em ulFlags.
ulFlags
[in] Um bitmask de sinalizadores que controla a exclusão da subpasta. Os seguintes sinalizadores podem ser definidos:
DEL_FOLDERS
Todas as subpastas da subpasta apontadas por lpEntryID devem ser excluídas.
DEL_MESSAGES
Todas as mensagens na subpasta apontadas por lpEntryID devem ser excluídas.
DELETE_HARD_DELETE
Remove permanentemente a pasta.
FOLDER_DIALOG
Um indicador de progresso deve ser exibido enquanto a operação prossegue.
Valor de retorno
S_OK
A pasta especificada foi excluída com êxito.
MAPI_E_HAS_FOLDERS
A subpasta que está sendo excluída contém subpastas e o sinalizador DEL_FOLDERS não foi definido. As subpastas não foram excluídas.
MAPI_E_HAS_MESSAGES
A subpasta que está sendo excluída contém mensagens e o sinalizador DEL_MESSAGES não foi definido. A subpasta não foi excluída.
MAPI_W_PARTIAL_COMPLETION
A chamada foi bem-sucedida, mas nem todas as entradas foram excluídas com êxito. Quando esse aviso é retornado, a chamada deve ser tratada como bem-sucedida. Para testar esse aviso, use a macro HR_FAILED . Para obter mais informações, confira Usando macros para tratamento de erros.
Comentários
O método IMAPIFolder::D eleteFolder exclui uma subpasta. Por padrão, DeleteFolder opera apenas em pastas vazias, mas você pode usá-la com êxito em pastas não vazias definindo dois sinalizadores: DEL_FOLDERS e DEL_MESSAGES. Somente pastas ou pastas vazias que definem os sinalizadores DEL_FOLDERS e DEL_MESSAGES na chamada DeleteFolder podem ser excluídas. DEL_FOLDERS permite que todas as subpastas da pasta sejam removidas; DEL_MESSAGES permite que todas as mensagens da pasta sejam removidas.
O programa MFCMAPI permite escolher entre a pasta soft-delete vs. pasta hard-delete. Exchange Server 2019 também não implementa a exclusão de pastas em repositórios privados e trata solicitações de exclusão para pastas em repositórios privados (cf. a solicitação [ropOpenFolder]) como se DELETE_HARD_DELETE fosse definido.
Observações para implementadores
Quando a operação de exclusão envolve mais de uma pasta, execute a operação o mais completamente possível para cada pasta. Às vezes, uma das pastas a serem excluídas não existe ou foi movida ou copiada para outro lugar. Não interrompa a operação prematuramente, a menos que ocorra uma falha que esteja fora de seu controle, como ficar sem memória, ficar sem espaço em disco ou corrupção no repositório de mensagens.
Notas para chamadores
Espere esses valores retornados nas seguintes condições.
Condition | Valor de retorno |
---|---|
DeleteFolder excluiu com êxito cada mensagem e subpasta. | S_OK |
DeleteFolder não pôde excluir com êxito cada mensagem e subpasta. | MAPI_W_PARTIAL_COMPLETION ou MAPI_E_NOT_FOUND |
DeleteFolder não pôde ser concluído. | Qualquer valor de erro, exceto MAPI_E_NOT_FOUND |
Quando DeleteFolder não puder ser concluído, não suponha que nenhum trabalho tenha sido feito. DeleteFolder pode ter sido capaz de excluir uma ou mais das mensagens e subpastas antes de encontrar o erro.
Se uma ou mais subpastas não puderem ser excluídas, DeleteFolder retornará MAPI_W_PARTIAL_COMPLETION ou MAPI_E_NOT_FOUND, dependendo da implementação do provedor do repositório de mensagens.
Referência do MFCMAPI
Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.
Arquivo | Função | Comentário |
---|---|---|
MsgStoreDlg.cpp |
CMsgStoreDlg::OnDeleteSelectedItem |
O MFCMAPI usa o método IMAPIFolder::D eleteFolder para excluir pastas. |