文档章节

MFC 关于使用CDC::SelectObject遇到的问题

more_or
 more_or
发布于 2017/07/22 17:53
字数 228
阅读 17
收藏 0
MFC

我们在设置字体、画刷等等时,都会在设置时保存旧字体、旧画刷的指针。在使用CDC之后,通过设置回旧字体释放GDI资源,防止资源泄漏。 但是我在Visual Studio 2015环境中,使用下面的错误写法,是不会报错的:

CPaintDC dc(this);
CFont font;
CFont* pOldFont = dc.SelectObject(font);

也就是在SelectObject的参数中输入的不是指针类型。此时调用的方法是 HGDIOBJ CDC::SelectObject(HGDIOBJ); 通过这个方法返回的指针在重新设置时会出错。

输入图片说明

通过调试发现,如果不使用指针类型,返回的pOldFont中一个m_pObject显示为“????”,这会导致在设置旧字体是失败。所以在使用CDC::SelectObject(),要传入指针类型。

CPen* SelectObject( CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);

© 著作权归作者所有

共有 人打赏支持
more_or
粉丝 0
博文 8
码字总数 3925
作品 0
私信 提问
【Visual C++】CDC与HDC的区别以及相互转换

CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的DC的基类.常用的...

长平狐
2012/11/12
95
0
详解DC、CDC、HDC、句柄、设备上下文

MFC中的DC、CDC、HDC、句柄、设备上下文究竟是什么意思? 在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API 你...

IMGTN
2012/06/04
0
0
关于MFC播放背景音乐和显示背景图片的问题

关于MFC播放背景音乐的问题: 1.建立一个MFC的程序 2.插入资源(插入->资源->定制->(输入WAVA)) 3.在resources中找到"WAVA"文件,打开有个IDR_WAVA1 4.右键->import->浏览后缀名为.wav的音...

长平狐
2012/10/08
72
0
C,C++,VC++,MFC之间有什么区别和联系

转载:http://blog.163.com/jackiehowe/blog/static/199491347201242011203225/ C语言是一种古老而又经久不衰的计算机程序设计语言,大约诞生于上个世纪60年代。由于它的设计有很多优点,多年...

80后小子
2015/07/03
0
0
MFC绘图2-客户区大小和DC

MFC绘图2-客户区大小和DC 客户区大小和DC 在绘图前,必须先得到客户区大小和设备上下文DC。 1.获得客户区 绘图一般都是在视图窗口的客户区进行,而客户区的大小在运行时可由用户改变,为了使...

IMGTN
2012/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部