VC中CDC与HDC的区别以及二者之间的转换

 

标签: 

杂谈

分类: 编程语言学习总汇

CDC是MFC的DC的一个类 

HDC是DC的句柄,API中的一个类似指针的数据类型. 

MFC类的前缀都是C开头的 

H开头的大多数是句柄 

这是为了助记,是编程读\写代码的好的习惯. 

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

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

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

MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使用它的默认方法,就是,记住它的名字与参数(可以用笔记,代替脑记). 

如果将window api比做汇编语言 

那么MFC就相当于Basic语言.

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

 

 

CDC是MFC的DC的一个类 

HDC是DC的句柄,API中的一个类似指针的数据类型. 

MFC类的前缀都是C开头的 

H开头的大多数是句柄 

这是为了助记,是编程读\写代码的好的习惯. 

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

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

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

MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使用它的默认方法,就是,记住它的名字与参数(可以用笔记,代替脑记). 

如果将window api比做汇编语言 

那么MFC就相当于Basic语言.

 

 

HDC是WINDOWS的一种数据类型,是设备描述句柄。   

  而CDC是MFC里的一个类,它封装了几乎所有的关于   

  HDC的操作。   

  也可以这样说,HDC定义的变量指向一块内存,这块   

  内存用来描述一个设备的相关的内容,所以也可以   

  认为HDC定义的是一个指针;而CDC类定义一个对象,   

  这个对象拥有HDC定义的一个设备描述表,同时也包   

  含与HDC相关的操作的函数。   

  这与HPEN和CPen,POINT与CPoint之间的差别是一样   

  的。

 

CDC 到HDC 的转化:

2007-05-09 12:04

方法一: 此方法在设备结束时不会销毁原来的资源(即: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()也不会销毁原来资源

 

http://blog.sina.com.cn/s/blog_523491650100gwii.html

你可能感兴趣的:(MFC)