想删除一个文件夹下所有文件,一查RemoveDirectory却查到SHFileOperation函数,它是参数是SHFILEOPSTRUCT这种类型的结构,对于其中pfrom和pto 赋值问题相信烦倒了不少人。下面有两种可行的方式,提供给大家,有不当之处请指出。
1.
SHFILEOPSTRUCT pData;
pData.hwnd = NULL;
pData.wFunc = FO_DELETE;
pData.pFrom = "C://abc//def/0";
pData.pTo = NULL;
pData.fFlags = FOF_NOCONFIRMATION;
pData.lpszProgressTitle = NULL;
2.
string path = "C://test dir";
TCHAR psz[_MAX_PATH];
memset( psz, 0, _MAX_PATH );
strcpy( psz, path.c_str() );
int len = strlen(psz);
psz[len] = '/0';
SHFILEOPSTRUCT pData;
pData.hwnd = NULL;
pData.wFunc = FO_DELETE;
pData.pFrom = psz;
pData.pTo = NULL;
pData.fFlags = FOF_NOCONFIRMATION;
pData.lpszProgressTitle = NULL;
我们提示的路径通常不像第一种情况是固定的,而像第二种情况那样是变量,做那么多操作无非是在字符串后面加上'/0',然而直接加上'/0'是无法成功的,我也不知道原因,这里的做法是模仿CSimpleStringT::AppendChar的做法。大家可以看看它的实现。