一:MFC中HDC与CDC区别和转化
2011-03-14 12:22
253 查看
MFC中HDC与CDC区别和转化
CDC是MFC的DC的一个类 ,它封装了几乎所有的关于 HDC的操作。 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()函数中 也可以这样说,HDC定义的变量指向一块内存,这块内存用来描述一个设备的相关的内容,所以也可以 认为HDC定义的是一个指针; 而CDC类定义一个对象,这个对象拥有HDC定义的一个设备描述表,同时也包 含与HDC相关的操作的函数。 这与HPEN和CPen,POINT与CPoint之间的差别是一样的。 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; cdc到hdc hdc = cdc.GetSafeHdc(); hdc到cdc cdc.Attach(hdc); |
相关文章推荐
- MFC中CDC与HDC的区别和联系
- MFC中CDC与HDC的区别以及二者之间的转换
- MFC HDC CDC的区别(其实我真心不乐意写MFC)
- DC、HDC和CDC的区别及MFC常见类的作用
- MFC中的CDC,CClientDC,CPaintDC,CWindowDC的区别
- MFC:HDC与CDC
- Windows Gdi & CDC和HDC的区别与转换
- VC中CDC与HDC的区别以及二者之间的转换
- CDC和HDC的区别与转换
- VC中CDC与HDC的区别以及二者之间的转换
- CDC与HDC的区别以及二者之间的转换
- vc初步之——— HDC,CDC,CClientDC的区别和联系是什么?
- hWnd,hDC,CDC有什么区别
- CDC与HDC的区别以及他们之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- MFC中的CDC,CClientDC,CPaintDC,CWindowDC的区别
- CDC和HDC的区别与转换
- HDC、CDC、CCLientDC的关系、MFC类库
- MFC编程-HDC,CDC,CWindowDC,CClientDC,CPaintDC详解
- VC中CDC与HDC的区别以及二者之间的转换