用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, 我已经不用了.

最新文章

  1. SQL Server2016 新功能实时查询统计信息
  2. 利用vmware 搭建分布式集群
  3. Ruby的基本语法-数组
  4. HDU5816 Hearthstone(状压DP)
  5. UESTC 31 饭卡(Card) --背包问题
  6. 前端 解决swiper js 手动滑动一下后不能自动播放
  7. dump java
  8. Source not found The JAR file …has no source attachment.
  9. CodeForces 1B Spreadsheets (字符串处理,注意细节,大胆尝试)
  10. UBUNTU下FPT工具--lftp使用说明
  11. [转]Windows中的句柄(handle)
  12. HDU 2653 - Waiting ten thousand years for Love
  13. IOS 物理引擎
  14. Swift - 日期选择控件(UIDatePicker)的用法
  15. JS中数组的常用方法
  16. Java核心技术第四章——1.封装性
  17. 简单测试Elasticsearch 7.0
  18. 什么是 MIME TYPE?
  19. Python开发之数据类型
  20. [转载]Windows服务编写原理及探讨(4)

热门文章

  1. MVC 登录后重定向回最初请求的 URL FormsAuthentication.RedirectFromLoginPage
  2. 想要删除table的某一行的js写法
  3. 通过libVirt抓取kvm虚拟机监控指标数据
  4. Struts过滤器
  5. httpd基础
  6. 洛谷 - P3966 - 单词 - AC自动机
  7. ZOJ3359【阅读理解】
  8. Untiy一些方法前特殊标签记录
  9. Unity亚洲开发者大会会议简录之技术篇,Profiler的一些参数的意思
  10. Ogre 简易角色Demo