用GetDC()得到的DC, 必须调用ReleaseDC()
用CreateDC()创建的DC, 必须调用DeleteDC()

两者是不能混淆的.
一种典型的错误代码如下:
CDC* pDC = GetDC();
…..
//做一些无聊的事
…..

pDC->DeleteDC(); //做了错误的事

一般情况下, 上面这个代码也能够工作, 就是有时要报一点
CHandleMap::RemoveHandle(HANDLE h)异常, 跟踪进代码也看不出啥问题.
区别:
ReleaseDC()仅是释放对DC的引用
DeleteDC()是删除DC对象, 使用GetDC()的时候, 明显的这个DC不是我们自己创建的, 使用DeleteDC()的话就会将别人(通常是MFC框架)创建的DC干掉, 这样当别人要使用自己创建的DC时, 就会产生异常 了.

ReleaseDC()恰好解决这个问题, 它仅是释放一个引用, 告诉创建者DC, 我已经不用了.

转载于:https://www.cnblogs.com/xingrun/p/3409484.html

GetDC(),ReleaseDC()相关推荐

  1. GetDC() ReleaseDC()引起的内存泄漏

    BUG: GetDC() ReleaseDC()引起的内存泄漏 今天同事在一个定时器中画图,结果发现内存缓慢增长,怀疑是内存泄漏,查了很久,该释放的GDI资源都释放了的啊,可是还是无法解决,最后把Ge ...

  2. 关于HDC GetDC ReleaseDC

    HDC hdc;定义一个设备上下文的句柄,在API中用 如API中响应WM_PAINT时,要在窗口中显示文字: RECT rc: GetClientRect(hWnd,&rc);//获取客户区 ...

  3. BeginPaint EndPaint 与GetDC ReleaseDC的区别

    1. 绘图一般在WM_PAINT消息里面绘图, 一般用BeginPaint( HWND hwnd, LPPAINTSTRUCT lpPaint) 与BOOL EndPaint(   HWND hWnd ...

  4. MFC窗口的GetDC()/ReleaseDC()有bug会造成内存泄露

    MFC窗口的GetDC()/ReleaseDC()有bug会造成内存泄露,解决办法:使用win32的对应接口::GetDC()/::ReleaseDC().

  5. 错误: 内存泄漏,当您使用 GetDC 方法和 ReleaseDC 方法的 CWnd 类版本

    症状 调用CWnd::GetDC函数跟CWnd::ReleaseDC函数的代码运行时,会出现 4 个字节的内存泄漏. 原因 导致此错误的原因是当前未知. 解决方案 若要避免此问题,请不要使用GetDC ...

  6. BeginPaint和GetDC有什么区别?【转】

    转自:http://hi.baidu.com/d_b_mike/blog/item/ec8820d0fb9127d5572c84a9.html 这是个windows编程问题. 第一种情况显示出来的字很 ...

  7. VC绘制位图--BeginPaint()与GetDC()的区别

    //======================================================================== //TITLE: //    EVC绘制位图--B ...

  8. BeginPaint和GetDC有什么区别

    windows编程问题 第一种情况显示出来的字很正常. case WM_PAINT: gdc = BeginPaint (hwnd, &ps); TextOut (gdc, 0, 0, s, ...

  9. GetDC()内存泄露

    最近碰到的问题,在定时器中重绘图像发现了内存泄露稳定,反复测试发现是调用了GetDC函数导致的.我用的是visual studio 2010.上网一搜果然发现了问题. http://blog.csdn ...

最新文章

  1. AI人工智能天机芯芯片
  2. 阿里开源了一项自研核心技术 Pouch!
  3. 20年总结,21年展望
  4. 文件共享同步5种方式:NFS、NAS、rsync、scp、ftp
  5. 4路视频+4路百电(物理隔离)+8路电话+开关量+串口+电话光端机 武警光端机
  6. 【Java】异常处理的目的
  7. Java笔记-腾讯验证码平台使用实例
  8. linux 统计目录大小并按大小排序
  9. 使用Docker安装Redis
  10. app自动化问题点整理
  11. SQL 2008R2 安装失败问题
  12. python快速排序函数_两种方法在Python中实现快速排序
  13. redis的设计与实现
  14. 射频微电子学_专注于射频前端芯片,苏州汉天下完成新一轮融资
  15. Unity3D 脚本模板插件
  16. 【王佩丰】PowerPoint2010视频教程 1
  17. php unexpected t_if,zblog提示syntax error, unexpected 'if' (T_IF)出错,模版压缩导致PHP提示代码错误...
  18. android 分享到qq黑屏,Android 第三方登录 QQ登录Android 10系统 出现黑屏问题
  19. 音乐播放器制作 (HTML + CSS + JavaScript)
  20. 前端轮播插件banner

热门文章

  1. 2021PHP面试题大全
  2. LabVIEW——房间温度PID控制实验系统数据采集
  3. 解决win10下安装ubuntu14.04后无法搜寻和连接wifi无线网络的问题
  4. python pip源中国镜像地址列表
  5. SGMII调试及丢包问题
  6. or: union member ‘RTMP::RtmpStream::NalData::nal_data::StapA’ with non-trivial ‘RTMP::RtmpS
  7. ***S 2012 仪表 -- 关键绩效指标
  8. WebUploader 上传文件的两种方式(手动上传,自动上传)
  9. 丑小鸭课件软件测试,《丑小鸭的故事》课件.ppt
  10. 亚马逊测评一个月能赚多少?几十万赚不到?门槛高吗?