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