要实现的功能是利用图片的路径将图片复制到某个路径
但是程序在运行时却无法成功复制,加断点调试却成功
下面是程序
//复制文件函数
BOOL CSubVibDlg::CopyFile(char *pTo, char *pFrom)
{
SHFILEOPSTRUCT FileOp={0};
FileOp.fFlags = /*FOF_NOCONFIRMATION|*/FOF_NOCONFIRMMKDIR|FOF_SIMPLEPROGRESS; //不出现确认对话框//需要时直接创建一个文件夹,不需用户确定
FileOp.pFrom = pFrom;
FileOp.pTo = pTo;
FileOp.wFunc = FO_COPY;
return SHFileOperation(&FileOp) == 0;
}
void CSubVibDlg::OnMenuitemSavepic() 
{
// TODO: Add your command handler code here
//选择图片存储路径
TCHAR pToPath[MAX_PATH];
BROWSEINFO bi; 
bi.hwndOwner      = this->GetSafeHwnd();
bi.pidlRoot       = NULL;
bi.pszDisplayName = NULL; 
bi.lpszTitle      = TEXT("请选择文件夹"); 
bi.ulFlags        = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
bi.lpfn           = NULL; 
bi.lParam         = 0;
bi.iImage         = 0; 

LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl == NULL)
{
return;
}

if (SHGetPathFromIDList(pidl, pToPath))
{
AfxMessageBox(pToPath);  //存储路径提示
}
//获取图片路径
int pos;
pos = m_ctrlListPic.GetSelectionMark();
if (pos<0)
{
return;
}
CString pFromPath=m_vePicPath[pos];
char* pFromPic=(char*)(LPCTSTR)pFromPath;
CopyFile(pToPath,pFromPic); //把PID.dsp和PID.dsw俩个文件放到d盘下面
}
这句代码中,如果直接将pFromPic中的路径代替pFromPic
可正常运行