首页 新闻 会员 周边 捐助

vs2005中CImage 作为类成员变量时出错

0
悬赏园豆:20 [已关闭问题] 关闭于 2012-11-19 17:22

最近我在学习使用CImage类时,发现如果我把CImage 作为控件对象的成员变量,
运行时,在onpaint()函数中,画图draw(),会出现在CImage里面断言m_hbitmap != null出错问题,
导致不能运行下去。

但是,如果我把CImage对象使用new在堆中生成,控件对象获得这个CImage对象的指针,然后操作画图,那么就不会出现这个问题,好郁闷啊。

其中这个包含CImage的对象也是用new在堆中生成的。难道是生成CImage对象不能放在类对象里面吗?

出错的代码为:
Ctrl::Ctrl( HWND hWnd )
{
m_image.Load(L"icons\\star.png");
}
void Ctrl::drawImage(HDC* hdc)
{
m_image.Draw(*hdc, 50, 50, 50, 50); 
}

然后在WM_PAINT消息中画图:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
        ctrl->drawImage(&hdc); 
EndPaint(hWnd, &ps);


上面的代码运行后CImage会出现断言错误,为assert(m_hbitmap !== null);

但是只要构造函数改为,m_image = new CImage;改为在堆中生成CImage,
然后再设置一下其它地方,就不会有那个断言错误,图片也正常显示出来。

有没有人帮我解答一下?谢谢啦~

lvshuchengyin的主页 lvshuchengyin | 菜鸟二级 | 园豆:204
提问于:2012-11-19 16:51
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册