如果CImage尝试加载另一张图片,但加载方法失败了,它的像素会被改变吗?
CImage::Load
的源代码(atlimage.h)可以发现,无法加载图像会破坏先前存储的图像。两个Load
重载最终都调用CImage::CreateFromGdiplusBitmap
。该类成员执行两个操作:1)它调用Create
来为图像创建新存储。这个操作是破坏性的。2)它将源图像数据复制到目标。该操作可能失败。HRESULT NonDestructiveLoad( CImage& img, const CString& fileName ) {
CImage tempImage;
HRESULT hr = tempImage.Load( fileName );
if ( SUCCEEDED( hr ) ) {
// The following operations cannot fail
img.Destroy();
img.Attach( tempImage.Detach() );
}
return hr;
}
CImage::IsNull()
在代码的不同位置检查加载是否成功。 - Michael Plautz