初识 MFC 中的 DC

1. DC(device context)叫设备环境或者设备描述表,它其实是GDI内部保存数据的一种数据结构。此结构中的属性内容与特定的输出设备(显示器、打印机等)相关,属性定义了GDI函数的工作细节。 总之,你要使用GDI绘图函数,就需要一个DC句柄。MFC中把和DC相关的都封装成类。CDC是一个抽象基类,可以访问整个显示器和打印机等。CClientDC类和窗口客户区关联,能用于显示客户区相关内容。

=================

2. MFC中HDC与CDC区别和转化

CDCMFCDC的一个类,它封装了几乎所有的关于HDC的操作。

HDCDC的句柄,API中的一个类似指针的数据类型.设备描述句柄。

MFC类的前缀都是C开头的

H开头的大多数是句柄

CDC中所有MFCDC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类).

CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;HDC类型的句柄.

记住下面的一句话,会有助于你的理解.

MFC的类,是在用window API语句开发出来的有一定功能的小程序.

如果将window api比做汇编语言

那么MFC就相当于Basic语言.

cdc是设备描述表的基类,clientDC指代客户区的设备描述表,PaintDC只用于OnPaint()函数中

也可以这样说,HDC定义的变量指向一块内存,这块内存用来描述一个设备的相关的内容,所以也可以认为HDC定义的是一个指针;

CDC类定义一个对象,这个对象拥有HDC定义的一个设备描述表,同时也包含与HDC相关的操作的函数。

这与HPENCPenPOINTCPoint之间的差别是一样的。

CDC HDC的转化:

方法一: 此方法在设备结束时不会销毁原来的资源(:hDC,hBitmap)

CDC *pDC = CDC::FromHandle(hDC);

CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);

方法二: 此方法在设备结束时会销毁原来的资源(:hDC,hBitmap)

CDC dc;

dc.Attach(hDC);

CBitmap bit;

bit.Attach(hBitmap);

在结束的时候不加dc.detach()也不会销毁原来资源

HDC hdc;

CDC cdc;

cdchdc hdc= cdc.GetSafeHdc();

hdccdc cdc.Attach(hdc);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值