void CPhoneBitmap::OnPaint(void)
{
CPaintDC dc(this); // device context for painting
HBITMAP MemoryBitmap;
MemoryBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(m_uiPhoneBitmapID));
if(NULL != MemoryBitmap) {
DeleteObject(MemoryBitmap);
}
}
m_uiPhoneBitmapID是不同的图片id,我每秒都调用OnPaint函数,我观察任务管理器,当GDI对象到10000时,读图片就丢失了,请教如何释放LoadBitmap的资源???
{
CPaintDC dc(this); // device context for painting
HBITMAP MemoryBitmap;
MemoryBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(m_uiPhoneBitmapID));
if(NULL != MemoryBitmap) {
DeleteObject(MemoryBitmap);
}
}
m_uiPhoneBitmapID是不同的图片id,我每秒都调用OnPaint函数,我观察任务管理器,当GDI对象到10000时,读图片就丢失了,请教如何释放LoadBitmap的资源???
解决方案 »
- OpenGL绘制3维图形的颜色问题
- RingSDK帮助文档发布!
- 郁闷,MSDN的索引没了
- 100分求教一个VC如何控制系统声音的问题,谢谢!应该很简单!
- 工具栏上按钮不可用时的图片是怎么计算出来的?
- 如何调用win2000下“程序-附件-图像处理”应用程序中“文件--获取图像”打开的那个“USB PC Camera 301P”摄像程序?
- 请问在MFC ODBC中,如何得到记录的
- com在.net中处于哪种地位,现在学com值得不?".net组件"到底指的是什么? up有分..
- 位图操作高手请进!!!!!!
- 为什麽会这样!
- 用vc++实现Chord协议
- 关于odbc 记录集指针删除的错误 及内存泄露问题(急)
The application must call the DeleteObject function to delete each bitmap handle returned by the LoadBitmap function.
用boundchecker检查一下
检查一下DeleteObject返回值.
MemoryBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(m_uiPhoneBitmapID)); if(NULL != MemoryBitmap) {
DeleteObject(MemoryBitmap);
} 你的。中有没有使用SetBitmap()之类的函数,如果有的话,那么每次你调SetBitmap()的时候,该函数都会返回你要将位图装入的那个控件的原位图句柄,所以你要捕捉SetBitmap()的返回值,在结束的时候或者立即调用DeleteObject()杀掉它, 否则这个旧的位图的对象就会像个孤魂野鬼一样在系统内存中飘荡,而且随着你调用SetBitmap()的次数,越来越多,最终导致程序崩溃。