MFC为什么要保留原来的CPen, 然后SelectObject
{CPen aPen;aPen.CreatePen(PS_SOLID, 2, RGB(0, 0, 0));CPen* pOldPen = pDC->SelectObject(&aPen);//....pDC->SelectObject(pOldPen); } 就像这么简单的情况也得还原成原来的画笔吗? 原因有以下几个:
窗口(视图)类,在任何地方(包括基础代码)都能获取DC并调整画笔,你无法确认上次使用的画笔是否被更换了,因此在每次画之前要Select
通常画笔都是使用临时变量CPen,这样在函数执行后,这个画笔会失效,如果不将OldPen放回去,会造成内存泄露(应该释放但因DC绑定而无法释放,下次放弃使用的时候又无法判断是否应该释放)
如果同样的画笔被重复频繁使用,可以在堆上建一个画笔指针,这样能提高效率(具体可以作为View类成员指针变量)
总之,SelectObject(pOldPen)是避免内存泄露的良好编程习惯。
MFC为什么要保留原来的CPen, 然后SelectObject相关推荐
- 使用MFC绘制一些简单图形
目录 一.画直线 更改画笔样式 二.使用画刷画一个矩形 透明矩形 自定义颜色填充矩形 自定义图形填充矩形 四.实现一个画笔 五.画扇形 六.画椭圆 七.画圆 八.输出文本 一.画直线 画一条直线需要一 ...
- [转载] MFC绘制动态曲线,用双缓冲绘图技术防闪烁
转载的原文地址 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线 所谓动画,都是一帧一帧的图像连续呈现在用户面前形成的.所以如果你掌握了如何绘制静态曲线,那 ...
- MFC绘制动态曲线,用双缓冲绘图技术防闪烁
转载自:ZHY_ongu的博客:MFC绘制动态曲线,用双缓冲绘图技术防闪烁 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新. 一.如何绘制动态曲线. 所谓动画,都是一帧一帧 ...
- MFC真的过时了吗?C++是否真的适合做GUI界面?
1.前言 这几天在论坛看到一个有趣的问题:新人入职公司做C++开发,发现公司用的界面GUI还是微软古老的MFC框架,想问大家MFC是不是已经过时了?是否还有深入学习的必要? 其实,个人觉得在讨论这 ...
- Visual C++/MFC入门教程
Visual C++/MFC入门教程 VC开发指南 1.1 如何学好VC 这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果.万事开头难,为了帮助朋友 ...
- VC开发指南--Visual C++/MFC入门教程
VC开发指南 1.1 如何学好VC 这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果.万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一 ...
- Windows编程与MFC # 4 单文档应用程序(1)
整理自VC++程序设计课程课件 使用VC++的应用程序向导MFC AppWizard可以开发: Single document(单文档) Multiple document(多文档) Dialog b ...
- C++实现指针式时钟Sample
前言 <指针式时钟>问题分析,功能分析 (1)正确显示系统时钟: (2)能准确定位时钟刻度和时分秒针的位置: (3)能随窗口大小的变化而变化. 源码下载链接,本文Sample源码下载地址: ...
- VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
上一节中鸡啄米讲了CDC类及其屏幕绘图函数,本节的主要内容是GDI对象之画笔CPen. GDI对象 在MFC中,CGdiObject类是GDI对象的基类,通过查阅MSDN我们可以看到,CGdiObje ...
最新文章
- Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事
- C语言其实不难,只是你没有找对方法!
- Qt5.7+Opencv2.4.9人脸识别(三)人脸处理
- python学习——matplotlib库——折线图
- Loopback for Mac(创建虚拟音频设备与音频编辑工具)
- python查找在圆周率100万个数字中是否有你的生日
- android+汉王手写引擎,汉王 从手写专家到输入法专家
- java实现输入数字 输出金额_JAVA实现数字大写金额转换的方法
- 什么是web services?它有什么作用,以及它如何实现?
- %02x与%2x 区别
- RS485 光照度传感器 pc串口工具调试设备 亲身体验
- tushare获得股票数据后进行数据合并
- 生活需要创意-精彩的水果创意设计
- 雨水情测报系统+智慧水库大坝安全监测系统
- 为什么mac Safari提示:打不开该网页,因为无法与服务器建立安全的链接?
- 刻录光盘软件测试工资,Windows XP刻录数据光碟
- 基于HTML电商项目的设计与实现——html静态网站基于数码类电商购物网站网页设计与实现共计30个页面...
- 基于单片机的智能晾衣杆
- ip nat inside sourse 和 ip nat source 区别
- java过滤.txt_关键词过滤实现(JAVA TXT)
热门文章
- boost::range_category和boost::iterator_category相关的测试程序
- 使用 Boost.MPI 的 reduce() 连接字符串的示例
- boost::mp11::mp_apply_q相关用法的测试程序
- boost::geometry::dot_product用法的测试程序
- boost::fusion::extension::adt_attribute_proxy用法的测试程序
- boost::function模块function_typeof的测试程序
- boost::filesystem模块和boost::timer混合的测试程序
- VTK:小部件之CompassWidget
- VTK:可视化之AxisActor
- VTK:PolyData之TransformOrderDemo