方法一:使用CreateFile和WriteFile
HRSRC res=::FindResource(NULL, MAKEINTRESOURCE(IDR_JPG1), "jpg");
HGLOBAL gl=::LoadResource(NULL,res);
LPVOID lp=::LockResource(gl); // 查找,加载,锁定资源
CString strFileName("d:\\Temp.jpg");
CFileFind fFind;
BOOL bExist=fFind.FindFile(strFileName); //判断文件是否存在
fFind.Close ();
if(!bExist) //如果文件不存在则创建
{
HANDLE fp=::CreateFile(strFileName,
GENERIC_WRITE,
FILE_SHARE_READ ,
NULL,
CREATE_NEW, //创建新文件,如目标文件已存在则调用失败
0,
NULL);
DWORD aa;
if (!::WriteFile (fp,lp,::SizeofResource(AfxGetResourceHandle(),res),&aa,NULL))
return; //sizeofResource 得到资源文件的大小
::CloseHandle (fp); //关闭句柄
::FreeResource (gl); //释放内存
}
方法2:使用CFile
CString strFileName("d:\\Temp.jpg");
CFileFind fFind;
BOOL bExist=fFind.FindFile(strFileName); //判断文件是否存在
fFind.Close ();
if(!bExist)
{
HRSRC hResInfo = ::FindResource(NULL,(LPCSTR)IDR_JPG1,"jpg");
HGLOBAL hRes = ::LoadResource(NULL,hResInfo );
CFile ff;
ff.Open( "temp.jpg", CFile::modeCreate | CFile::modeWrite, NULL))
ff.WriteHuge((LPSTR)hRes, ::SizeofResource(::AfxGetResourceHandle(), hResInfo) ); //写入文件
ff.Close();
}