首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

局部变量急需ReleaseDC

2013-02-25 
局部变量需要ReleaseDC?void fun(){CDC *pdc GetDC()ReleaseDC(pdc)//需要吗}[解决办法]CWnd::GetDC C

局部变量需要ReleaseDC?
void fun()
{
CDC *pdc = GetDC();
ReleaseDC(pdc);//需要吗
}
[解决办法]
CWnd::GetDC 
CDC* GetDC( );

Return Value

Identifies the device context for the CWnd client area if successful; otherwise, the return value is NULL. The pointer may be temporary and should not be stored for later use.-------------------------------------------------
这个函数返回的可能是堆上创建的空间也可能是返回一个栈上已有的空间
为了不用开发人员自己去判断这里到底是怎么回事,这里GetDC( )会自己判断是
new一个对象还是返回一个已有对象
然后Release会根据GetDC的执行情况来选择是delete还是啥也不做
[解决办法]
楼主不妨加一个按钮测试一下,如果不ReleaseDC(pdc),从任务管理器里看进程,你发现GDI对象每点一次按钮会增加的,GDI泄露,但GDI对象多到一定程度时,后果很严重。。。。。程序会死掉。。。。,你可以再加上ReleaseDC(pdc)测试一下,说到点子上了,楼主给分哈。
[解决办法]
通常用 DeleteObject 就可以了。

热点排行