FOF_NORECURSION при удалении файла с подпапками - PullRequest
0 голосов
/ 17 марта 2019

Может кто-нибудь объяснить мне, что означает MSDN описание флага FOF_NORECURSION:

FOF_NORECURSION

Выполняйте операцию только в локальном каталоге. Не работать рекурсивно в подкаталоги, что является поведением по умолчанию.

при использовании функции SHFileOperation для удаления папки?

SHFILEOPSTRUCT sfos = {0};
sfos.hwnd = hWnd;
sfos.wFunc = FO_DELETE;
sfos.pFrom = folderPath;   //Must be doubly-null-terminated
sfos.pTo = NULL;
sfos.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | 
              FOF_NOERRORUI | FOF_SILENT | FOF_NORECURSION;

SHFileOperation(&sfos);

Насколько я понимаю, если я вызываю его в папке, содержащей подпапки, эта папка не будет удалена. Но это не то, что я вижу.

1 Ответ

0 голосов
/ 17 марта 2019

Возможно, вы захотите использовать флаг FOF_FILESONLY, чтобы не переходить в подпапки.И для явного качества операции удаления на *.* с вашим путем.

int main()
{
    CoInitialize(nullptr);

    SHFILEOPSTRUCT sfos = { 0 };
    sfos.hwnd = nullptr;
    sfos.wFunc = FO_DELETE;
    sfos.pFrom = L"C:\\vacation\\pictures\\*.*\0";
    sfos.pTo = NULL;
    sfos.fFlags = FOF_FILESONLY;

    auto result = SHFileOperation(&sfos);

    return 0;
}
...