+ -
当前位置:首页 → 问答吧 → 这一段基本的GDI对象如何释放?

这一段基本的GDI对象如何释放?

时间:2011-12-13

来源:互联网

这一段基本的GDI对象如何释放?
  HWND playWnd = GetPlayWnd(); //GetPlayWnd(); 返回一个句柄,自己封的一个函数
  HDC hdc = ::GetDC(playWnd);
  CDC *playDC = CDC::FromHandle(hdc);

被句柄泄露和GDI对象泄露搞怕了,有点混淆。 
HBitmap句柄 使用LoadImage()初始化的要自己释放吗? 谢谢了。 我也知道Get的要Release,Create的要Delete,所以希望大家解释的详细些,谢谢了.

作者: xiaoxiaoyu85   发布时间: 2011-12-13

一般GetDC就对应ReleaseDC,Create...DC就对应Delete...DC
LoadImage完成以后需要释放的
Bitmap DeleteObject 
Cursor DestroyCursor 
Icon DestroyIcon 

作者: VisualEleven   发布时间: 2011-12-13

部长换图标了啊,呵呵,多谢。。

作者: xiaoxiaoyu85   发布时间: 2011-12-13

用GetDC()得到的DC, 必须调用ReleaseDC()
用CreateDC()创建的DC, 必须调用DeleteDC()
======================================================
GetDC()是得到已经创建的dc(非自己创建),所以用ReleaseDC()释放对dc引用,如果你对GetDC()得到的dc进行DeleteDC(),相当于删除了“人家”的dc,这当然不合理,所以会有异常;
而CreateDC()是自己创建的dc,好比你new一个对象,用完后就要delete,所以是DeleteDC()。
不知道我讲的明白不

作者: echoyin59   发布时间: 2011-12-13

要DeleteObject

作者: yayafu   发布时间: 2011-12-13