CDC是MFC的DC的一个类<wbr></wbr>
HDC是DC的句柄,API中的一个类似指针的数据类型.<wbr></wbr>
MFC类的前缀都是C开头的<wbr></wbr>
H开头的大多数是句柄<wbr></wbr>
这是为了助记,是编程读\写代码的好的习惯.<wbr></wbr>
CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类).<wbr></wbr>
CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄.<wbr></wbr>
记住下面的一句话,会有助于你的理解.<wbr></wbr>
MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使用它的默认方法,就是,记住它的名字与参数(可以用笔记,代替脑记).<wbr></wbr>
如果将window api比做汇编语言<wbr></wbr>
那么MFC就相当于Basic语言.
cdc是设备描述表的基类,clientDC指代客户区的设备描述表,PaintDC只用于OnPaint()函数中
CDC是MFC的DC的一个类<wbr></wbr>
HDC是DC的句柄,API中的一个类似指针的数据类型.<wbr></wbr>
MFC类的前缀都是C开头的<wbr></wbr>
H开头的大多数是句柄<wbr></wbr>
这是为了助记,是编程读\写代码的好的习惯.<wbr></wbr>
CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类).<wbr></wbr>
CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄.<wbr></wbr>
记住下面的一句话,会有助于你的理解.<wbr></wbr>
MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使用它的默认方法,就是,记住它的名字与参数(可以用笔记,代替脑记).<wbr></wbr>
如果将window api比做汇编语言<wbr></wbr>
那么MFC就相当于Basic语言.
HDC是WINDOWS的一种数据类型,是设备描述句柄。 <wbr><wbr></wbr></wbr>
<wbr><wbr>而CDC是MFC里的一个类,它封装了几乎所有的关于 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>HDC的操作。 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>也可以这样说,HDC定义的变量指向一块内存,这块 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>内存用来描述一个设备的相关的内容,所以也可以 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>认为HDC定义的是一个指针;而CDC类定义一个对象, <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>这个对象拥有HDC定义的一个设备描述表,同时也包 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>含与HDC相关的操作的函数。 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>这与HPEN和CPen,POINT与CPoint之间的差别是一样 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>的。</wbr></wbr>
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 <wbr>hdc; <wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>CDC <wbr>cdc; <wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>cdc到hdc <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>hdc <wbr>= <wbr>cdc.GetSafeHdc(); <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>hdc到cdc <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>cdc.Attach(hdc);</wbr></wbr>
tip1:
HDC <wbr>hdc; <wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>CDC <wbr>cdc; <wbr><wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>cdc到hdc <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>hdc <wbr>= <wbr>cdc.GetSafeHdc(); <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>hdc到cdc <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>cdc.Attach(hdc) <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr><wbr></wbr></wbr></wbr>
tip2:
CDC <wbr>是MFC中的类 <wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>而HDC是Handle <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>使用 <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>HDC <wbr>GetDC()</wbr></wbr></wbr>
tip3:<wbr></wbr>
CDC <wbr>cdc; <wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>HDC <wbr>hDC <wbr>= <wbr>cdc.m_hDC</wbr></wbr></wbr></wbr></wbr>
tip4:
CDC <wbr>dc; <wbr><wbr></wbr></wbr></wbr>
<wbr><wbr>HDC <wbr>hDC <wbr>= <wbr>dc.m_hDC <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>dc.FromHandle(hDC);</wbr></wbr>
tip5:
CDC <wbr>to <wbr>hdc <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>用成员变量m_hDC <wbr><wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>hdc <wbr>to <wbr>CDC <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>用FromHandle</wbr></wbr>
tip6:
dc.FromHandle(hDC)产生一个dc,但是是临时的,mfc不保证系统在什么时候删除dc. <wbr><wbr></wbr></wbr>
<wbr><wbr>dc.Attach(hDC)是永久的,直到这个dc的生命正常结束。</wbr></wbr>
tip7:
查找替换。将所有的(hdc,替换为pdc->(当然。前面声明个 <wbr></wbr>
<wbr><wbr>pdc就可以了。</wbr></wbr>
转自:http://blog.sina.com.cn/s/blog_523491650100gwii.html
分享到:
相关推荐
我以Microsoft Visual C++.net为例,来说一说我发现的与Microsoft Visual C++6.0的不同之处。 下面给你一个Microsoft Visual C++.net的工作空间(workspace)的总体印象,见下图(这也是我最喜欢的自定义形式,我用...
Visual C++.NET数据库开发技术与实践Visual C++.NET数据库开发技术与实践Visual C++.NET数据库开发技术与实践Visual C++.NET数据库开发技术与实践Visual C++.NET数据库开发技术与实践Visual C++.NET数据库开发技术与...
Visual C++ 实践与提高—图形图像编程篇
Visual C++源代码 4 如何在菜单栏中添加文本框Visual C++源代码 4 如何在菜单栏中添加文本框Visual C++源代码 4 如何在菜单栏中添加文本框Visual C++源代码 4 如何在菜单栏中添加文本框Visual C++源代码 4 如何在...
visual c++ 实践与提高—图形图像编程篇
Microsoft Visual C++微软常用运行库合集 微软常用运行库合集(32+64位合集)包含组件: Visual Basic Virtual Machine(5.1) Visual Basic Virtual Machine(6.0) Microsoft C Runtime Library 2002(7.0.9975.0) ...
Microsoft Visual C++ 2017 Redistributable Package (x64) 安装在未安装 Visual C++ 2017 的计算机上运行使用 Visual C++ 开发的 64 位应用程序所需的 Visual C++ 库的运行时组件。 此软件包安装 C Runtime (CRT)、...
VISUAL C++实践与提高:串口通信与工程应用篇.pdf
Visual C++ Redistributable for Visual Studio 2015 Visual C++ Redistributable for Visual Studio 2015
Visual C++ 2010 Express//Visual C++ 2010 学习版 离线安装版
Visual C++源代码 41 如何控制图像转换质量Visual C++源代码 41 如何控制图像转换质量Visual C++源代码 41 如何控制图像转换质量Visual C++源代码 41 如何控制图像转换质量Visual C++源代码 41 如何控制图像转换质量...
Microsoft Visual C++ 2017 Redistributable Package (x64) 安装在未安装 Visual C++ 2017 的计算机上运行使用 Visual C++ 开发的 64 位应用程序所需的 Visual C++ 库的运行时组件。 此软件包安装 C Runtime (CRT)、...
Visual C++数字图像处理技术详解 完整版 pdf + 源码 刘海波、沈晶、郭耸 等...同时,《Visual C++数字图像处理技术详解》还介绍了Visual C++与VTK、OpenCV和MATLAB等开发平台相结合进行数字图像处理的程序设计技术。
visual c++ 英文版 下载后安装
Microsoft Visual C++ 2012 Redistributable Package运行库,可以在不安装Microsoft Visual C++ 2012的情况下运行需要Microsoft Visual C++ 2012支持的软件、游戏补丁等程序。 同时对于运行程序时,缺少msvcr110....
Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码 192 如何使用自动化运行Excel宏Visual C++源代码...
书名:Visual C++实践与提高——串口通信与工程应用篇 丛书名:Visual C++开发实践与提高系列 书号:ISBN 7-113-06816-2/TP.1676 作者: 张筠莉 刘书智 主编 读者对象:程序开发人员 开本:16 开 出版日期:2006.1 ...
Visual C++源代码 50 如何增加或移除文件访问权限Visual C++源代码 50 如何增加或移除文件访问权限Visual C++源代码 50 如何增加或移除文件访问权限Visual C++源代码 50 如何增加或移除文件访问权限Visual C++源代码...
这些组件是运行使用 Visual Studio 2015(含 Update 3 RC)开发的 C++ 应用程序所必需的,并与 Visual C+ 库动态链接。这些包可用于在计算机上运行此类应用程序,即使没有安装 Visual Studio 2015。这些包还安装以下...
在 Windows 安装 python 包经常会遇到这错误: error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools 遇到这错误不要慌, 进这个网站下载对应的 whl 包即可。 ...