接上一篇,那就存在一个这样的问题,SHFileOperation的参数SHFILEOPSTRUCT的成员pFrom如果需要一个变量,应该怎样做呢?
根据上一篇的经验,我们要避免使用CString的GetBuffer获得其对应的LPTSTR,如果可以这样,定义一个这样的函数:
int CstringToLptStr(CString &srcStr, LPTSTR desStr, int nTranTCHARNums)
{
if(!sizeof(desStr)){
return 0;
}
int nsize = srcStr.GetLength();
nTranTCHARNums > nsize ? nTranTCHARNums = nsize : nTranTCHARNums;
int i = 0;
for(;i < nTranTCHARNums;i ++)
{
desStr [i] = srcStr.GetAt(i);
}
return nTranTCHARNums;
}
我们使用上面的函数完成从CString 到 LPTSTR的转化,这样是不会出错的,事实经过我测试,这种方式没有问题!
那么,所有的问题就在于,为什么使用CString::GetBuffer获得一个字符串指针并且赋值给另一个动态new 出来的字符数组,再将这个数组传递给
结构体的pFrom却不行呢?有待解答!