VC中CDC与HDC的区别以及二者之间的转换
来源:互联网 发布:淘宝网天猫女装棉衣 编辑:程序博客网 时间:2024/06/10 13:48
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指代客户区的设备描述表,PaintDCOnPaint()函数中。
HDC是WINDOWS的一种数据类型,是设备描述句柄。而CDC是MFC里的一个类,它封装了几乎所有的关于HDC的操作。也可以这样说,HDC定义的变量指向一块内存,这块内存用来描述一个设备的相关的内容,所以也可以认为HDC定义的是一个指针;而CDC类定义一个对象,这个对象拥有HDC定义的一个设备描述表,同时也包含与HDC相关的操作的函数。这与HPEN和CPen,POINT与CPoint之间的差别是一样的。
方法一: 此方法在设备结束时不会销毁原来的资源(即:hDC,hBitmap)
CDC *pDC = CDC::FromHandle(hDC);
CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);
方法二: 此方法在设备结束时会销毁原来的资源(即:hDC,hBitmap)
CDC dc;
HDC hDc;
dc.Attach(hDC);
CBitmap bit;
bit.Attach(hBitmap);
在结束的时候加dc.detach()也不会销毁原来资源
HDC hdc;
CDC cdc;
//cdc到hdc
hdc = cdc.GetSafeHdc();
//hdc到cdc
cdc.Attach(hdc);
方法三:
CDC dc;
HDC hDC;
hDC= dc.m_hDC //cdc到hdc
dc.FromHandle(hDC); //hdc到cdc
dc.FromHandle(hDC)产生一个dc,但是是临时的,mfc不保证系统在什么时候删除dc.
dc.Attach(hDC)是永久的,直到这个dc的生命正常结束。
cdc是设备描述表的基类,clientDC指代客户区的设备描述表,PaintDCOnPaint()函数中。
HDC是WINDOWS的一种数据类型,是设备描述句柄。而CDC是MFC里的一个类,它封装了几乎所有的关于HDC的操作。也可以这样说,HDC定义的变量指向一块内存,这块内存用来描述一个设备的相关的内容,所以也可以认为HDC定义的是一个指针;而CDC类定义一个对象,这个对象拥有HDC定义的一个设备描述表,同时也包含与HDC相关的操作的函数。这与HPEN和CPen,POINT与CPoint之间的差别是一样的。
方法一: 此方法在设备结束时不会销毁原来的资源(即:hDC,hBitmap)
CDC *pDC = CDC::FromHandle(hDC);
CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);
方法二: 此方法在设备结束时会销毁原来的资源(即:hDC,hBitmap)
CDC dc;
HDC hDc;
dc.Attach(hDC);
CBitmap bit;
bit.Attach(hBitmap);
在结束的时候加dc.detach()也不会销毁原来资源
HDC hdc;
CDC cdc;
//cdc到hdc
hdc = cdc.GetSafeHdc();
//hdc到cdc
cdc.Attach(hdc);
方法三:
CDC dc;
HDC hDC;
hDC= dc.m_hDC //cdc到hdc
dc.FromHandle(hDC); //hdc到cdc
dc.FromHandle(hDC)产生一个dc,但是是临时的,mfc不保证系统在什么时候删除dc.
dc.Attach(hDC)是永久的,直到这个dc的生命正常结束。
阅读全文
0 0
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- VC中CDC与HDC的区别以及二者之间的转换
- CDC与HDC的区别以及二者之间的转换
- CDC与HDC的区别以及二者之间的转换
- CDC与HDC的区别以及二者之间的转换
- LeetCode-104. Maximum Depth of Binary Tree
- hadoop中的PRC框架使用
- Codeforces Round #438 (Div. 1 + Div. 2 combined) 总结
- Python
- 10-4NOIP模拟赛总结
- VC中CDC与HDC的区别以及二者之间的转换
- poj 3349
- 欢迎使用CSDN-markdown编辑器
- Codeforces 868 C Qualification Rounds
- Qt代码配色VS2015风格
- linux常用命令(面试)
- Java 多线程 (PART VII) 使用join()方法保证线程的执行顺序
- 再来一篇卡尔曼滤波器
- Windows7/10上配置OpenCV3.3.0-Python3.6.2操作步骤