码迷,mamicode.com
首页 > 其他好文 > 详细

HICON泄漏

时间:2014-07-22 23:17:32      阅读:629      评论:0      收藏:0      [点我收藏+]

标签:des   color   使用   width   re   cti   

通常,我们使用的HICON对象只需用DestroyIcon后就不存在内存泄漏了,但是当我们使用GetIconInfo后会发现程序GDI资源存在泄漏,原因是GetIconInfo会产生2个HBITMAP对象,即ICONINFO结构体中的hbmColor和hbmMask,需要DeleteObject掉。切记切记!!!

CString strValue(_T(""));

HICON hIcon = NULL;
hIcon = ExtractIcon(AfxGetInstanceHandle(), strValue, 0);

if(hIcon)
{

   CRect rcIcon;

   GetClientRect(&rcIcon);

   ICONINFO icoInfo;
   GetIconInfo(hIcon, &icoInfo);
   rcIcon.left += rcIcon.Width()/2-icoInfo.xHotspot;
   rcIcon.top += rcIcon.Height()/2-icoInfo.yHotspot;
   DeleteObject(icoInfo.hbmColor);
   DeleteObject(icoInfo.hbmMask);
   DrawIcon(pDC->m_hDC, rcIcon.left, rcIcon.top, hIcon);
   DestroyIcon(hIcon);
}

HICON泄漏,码迷,mamicode.com

HICON泄漏

标签:des   color   使用   width   re   cti   

原文地址:http://www.cnblogs.com/doudongchun/p/3699708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!