如下代码里的注释,第一个Save总是失败,第二个总是成功。折腾好久都查不出原因,哪位熟悉该函数的知道原因啊?该怎么改正呢?CImage m_image;void CCMyImgDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
if (HBITMAP(m_image))
{
HRESULT hResult = m_image.Save(ar.m_strFileName);
if (FAILED(hResult)) //总是失败
AfxMessageBox(_T("保存图像文件失败!")); m_image.Save(_T("c:\\1.jpg")); //总是成功
}
}
else
{
if( !m_image.IsNull() )
m_image.Destroy(); m_image.Load(ar.m_strFileName);
MakeGrayscale_Fast();
}
}

解决方案 »

  1.   

    监视ar.m_strFileName是否有值。然后看项目属性时多字节还是宽字节的?ar.m_strFileName就相应的要转换,弄不好,就不能用ar.m_strFileName做文件名,创造文件。
      

  2.   

    先用GetLastError()查看下错误代号吧,不然纯看代码,看不出有什么问题。
      

  3.   

    第一你可以GetLastError看返回值,应该是你的ar.strFileName这个文件已经被打开占用了
    image就save不进去了