请各位高手来看看CImage类的问题 我调用过CImage类的程序退出后都会有一个进程留在内存里,请问各位高手怎么解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是用new创建的CImage对象吗? MFC中有好象没有这个类,你用的是别人做的类吧?如果是这样,查一下他在这个类里做了些什么,是不是启动了另一个进程。 如果你没有用new的话,在你的程序退出的时候调用一下m_ImageList.Delete();来释放资源如果你的ImageList是new出来的,在程序退出的时候if(m_pImageList){ delete m_pImageList; m_pImageList = NULL;}来释放资源! 是CImage类,MFC7.0 中的图像类,不是CImageList。 先释放CImage的对象从内存中释放掉,在退出程序! 调用的部分代码如下: CImage ImageRead; // 打开图像,并判断是否成功 if (ImageRead.Load(LPCTSTR(Imgfile.GetFilePath()))!=S_OK) return -11; // 图像打开失败 // 如果图像格式不符则返回 if (!ImageRead.IsDIBSection()) return -12; // 图像格式不符 // 获取图像颜色数 ColorNum=ImageRead.GetMaxColorTableEntries(); // 如果图像不是单色的则返回 // 此处为OCR扫描使用,如果不限于此用途,此判断可以去掉 if (ColorNum!=2) return -13; // 图像不是单色的 // 根据图像颜色数创建颜色表 ColorTable=new RGBQUAD[ColorNum]; // 获取颜色表内容 ImageRead.GetColorTable(0,ColorNum,ColorTable); // 将文件格式解码成Bitmap pBmp=CBitmap::FromHandle(ImageRead.Detach()); ImageRead.Destroy(); 如果你用new的话那是进堆,要delete 我没有用new啊,就是声明CImage ImageRead; ColorTable=new RGBQUAD[ColorNum];用到了堆. 哦,那是部分代码ColorTable在后面delete了问题是出现在CImage上,不用CImage就没问题。好像只有MFC7.0有这个问题,MFC7.1就没事,问题是在MFC7.0中怎么解决?请教各位高手了!! hardstudylulin(思过崖):没搞错吧??!!这有恭喜的吗?我都快跳楼了!! 问题的原因找到了,我在微软的网站上找到了CImage的说明,它说如果要释放的话需要调用CImage::ReleaseGDIPlus函数。但是此函数是在MFC7.1中提供的,并不在MFC7.0中提供,而我的版本是MFC7.0,我该怎么办啊?各位高手救命啊!! Dll加密 这样的情况最好是如何解决呢,关于vc2008、ADO连接读写sql2000数据库 Prof-UIS控件的使用问题 udp接收的问题 别人编的程序打不开,怎么办? 要在WINDOWS环境中做一个俄罗斯方块的游戏,该怎么作呀,给个思路。多谢。 寻高速sun Solaris 8下载地址,iso格式,谢谢200分 广域网中的两台机器如何通过TCP协议进行通讯 怎样给CButton加上Bitmap? VS2010 MFC exe文件 单独运行错误 如何在全局函数里获得对话框的句柄?急急急! 向高手求救!CImage类退出的问题
m_ImageList.Delete();来释放资源如果你的ImageList是new出来的,在程序退出的时候
if(m_pImageList){
delete m_pImageList;
m_pImageList = NULL;
}
来释放资源!
CImage ImageRead; // 打开图像,并判断是否成功
if (ImageRead.Load(LPCTSTR(Imgfile.GetFilePath()))!=S_OK)
return -11; // 图像打开失败 // 如果图像格式不符则返回
if (!ImageRead.IsDIBSection())
return -12; // 图像格式不符 // 获取图像颜色数
ColorNum=ImageRead.GetMaxColorTableEntries();
// 如果图像不是单色的则返回 // 此处为OCR扫描使用,如果不限于此用途,此判断可以去掉
if (ColorNum!=2)
return -13; // 图像不是单色的 // 根据图像颜色数创建颜色表
ColorTable=new RGBQUAD[ColorNum]; // 获取颜色表内容
ImageRead.GetColorTable(0,ColorNum,ColorTable);
// 将文件格式解码成Bitmap
pBmp=CBitmap::FromHandle(ImageRead.Detach()); ImageRead.Destroy();
用到了堆.
ColorTable在后面delete了
问题是出现在CImage上,不用CImage就没问题。
好像只有MFC7.0有这个问题,MFC7.1就没事,
问题是在MFC7.0中怎么解决?
请教各位高手了!!
这有恭喜的吗?
我都快跳楼了!!
各位高手救命啊!!