图片浏览器开发日志-12(CImage 作为参数最好用引用方式)

如题:不管函数里面是如何调用的,用&方式会减少莫名其妙的错误。

莫名其妙的错误

请看下面的两段所谓的代码


void CMyImage::CImageAsParameterReferTest(CImage &srcImg)
{
    
    
	// Nothing here!
}
void CMyImage::CImageAsParameterValueTest(CImage srcImg)
{
    
    
	// Nothing here!
}

再请看调用代码

   	CMyImage image;
	CImage src;
	src.Create(400, 400, 24);
	int times = 9;// less than 9 both methods are correct
	for (int i = 0; i < times; i++) {
    
    
		image.CImageAsParameterValueTest(src);// wrong
		//image.CImageAsParameterReferTest(src);//correct 
	}
	CImage dst;
	dst.Create(400, 400,24);
	Graphics dstG(dst.GetDC());
	Rect rect(0, 0, 400, 400);
	Pen pen(Color::Red, 3);
	dstG.DrawEllipse(&pen, rect);
	m_pImgTabDlg->DrawPic(dst, 2);
	dst.ReleaseDC();
代码很简单
就是画一个圆,期待结果如下:

在这里插入图片描述
当采用值引用时,得到的结果如下:
跟踪进去发现 graphics 实例化失败,不知道是为什么。或许是微软的bug。
在这里插入图片描述
说明:当值引用循环次数小于9时,结果也是对的。不知道这其中到底有什么缘由,望大虾指教。
不明所以的我,建议大家把CImage 当做参数时,全部采用值引用的方式,以防不测。

2020-04-18 于泛五道口地区

猜你喜欢

转载自blog.csdn.net/Uman/article/details/105589337
今日推荐