gpt4 book ai didi

c++ - CFile::Remove,从目录中删除了一个文件,但该文件不可用

转载 作者:行者123 更新时间:2023-11-28 03:03:07 25 4
gpt4 key购买 nike

我有一个 mfc 应用程序,它通过单击按钮删除一个文件,该文件正在被删除,但它在回收站中不可用。我希望该文件在回收站中可用。我该怎么做。

file.Remove((LPCTSTR)csFilePath.GetBuffer());

请帮帮我。

这是我在类里面实现的代码。请告诉我我错了吗?这是更多详细信息的代码

void CUtility::DeleteSelectedFile(CString csFilePath)
{ // ensure double-null ending
TCHAR szBuffer[MAX_PATH + 2] = {0};
_tcscpy_s(szBuffer, _countof(szBuffer), (LPCTSTR)csFilePath.GetBuffer());
int nResult;
// set up struct
SHFILEOPSTRUCT pStruct;
pStruct.hwnd = NULL;
pStruct.wFunc = FO_DELETE;
pStruct.pFrom = szBuffer;
pStruct.pTo = NULL;
pStruct.fFlags = FOF_ALLOWUNDO | FOF_SILENT | FOF_NOERRORUI;
pStruct.fAnyOperationsAborted = false;
pStruct.hNameMappings = NULL;
pStruct.lpszProgressTitle = NULL;
// perform the delete
nResult = SHFileOperation(&pStruct);
}

提前致谢。

最佳答案

不幸的是,MFC 不提供对回收站的支持,所以正确的方法是使用WinAPI --> SHFileOperation带有标志 FOF_ALLOWUNDO 的函数。

示例代码:

#include <windows.h>
#include <shellapi.h>

SHFILEOPSTRUCT fo = {0};
fo.wFunc = FO_DELETE;
fo.pFrom = filename; // specify full path with doubled zero at the end (\0\0)
fo.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_ALLOWUNDO;

if (SHFileOperation(&fo) == 0)
return true;

关于c++ - CFile::Remove,从目录中删除了一个文件,但该文件不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20286286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com