用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. 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
  2. collections之defaultdict
  3. html使两个按钮重叠,div按钮重叠HTML
  4. 架构师必须知道的架构设计原则
  5. To B 的产品经理和 To C 的产品经理有什么差别? To B 的产品经理的价值如何体现?
  6. 工作307:uni-富文本的实现逻辑跳转
  7. 【mysql】提取字符串中的数字、字母、中文,或任意组合
  8. 动态获取textarea后面的p标签_HTML简单标签连起实现的小玩意:
  9. Unable to run mksdcard SDK tool
  10. 网页聊天室php无数据库_无需数据库的PHP聊天室程序
  11. CCNA考试题库中英文翻译版及答案13
  12. 弘辽科技:如何快速提高淘宝店铺的综合评分
  13. 期望收益率、方差、协方差、相关系数的计算公式
  14. 一键去win7快捷方式小箭头
  15. QStyleOption类型
  16. 关于Spring项目配置多个数据源的实例演示
  17. 5G 技术特点与应用
  18. aecmap快捷键_arcmap快捷键
  19. 一阶高通滤波+二阶Mahony滤波的四元数姿态解算
  20. C++中的RVO、NRVO与Copy Elision

热门文章

  1. nvme固态必须uefi启动吗_【Ubuntu】UEFI安装Windows 10和Ubuntu 18.04双系统(深度爬坑)...
  2. 2021吊打面试官系列!mysql客户端命令
  3. 稀土永磁材料磁矩(磁偏角)测量比对实验
  4. 【软工实践】第五次作业——软件产品案例分析
  5. 电动车排名前十名是哪些品牌?看这篇文章就够了~
  6. siri为什么比谷歌搜索“笨”?
  7. Ubuntu 移动和复制文件夹(文件)到另一个文件夹
  8. 1613-3-傅溥衍 总结《2016年10月7日》【连续第七天总结】
  9. 使用 TensorFlow 在卷积神经网络上实现 L2 约束的 softmax 损失函数
  10. (4)(4.2.3) NAVIO2的组装和布线快速入门