DC设备上下文.doc

上传人:cn****1 文档编号:558285067 上传时间:2023-12-30 格式:DOC 页数:7 大小:62.01KB
返回 下载 相关 举报
DC设备上下文.doc_第1页
第1页 / 共7页
DC设备上下文.doc_第2页
第2页 / 共7页
DC设备上下文.doc_第3页
第3页 / 共7页
DC设备上下文.doc_第4页
第4页 / 共7页
DC设备上下文.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《DC设备上下文.doc》由会员分享,可在线阅读,更多相关《DC设备上下文.doc(7页珍藏版)》请在金锄头文库上搜索。

1、设备上下文设备上下文是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的 Windows 数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条、形状和文本的 Windows API。设备上下文允许在 Windows 中进行与设备无关的绘制。设备上下文可用于绘制到屏幕、打印机或者图元文件。 CPaintDC 对象将 Windows 的常见固定用语进行封装,调用 BeginPaint 函数,然后在设备上下文中绘制,最后调用 EndPaint 函数。CPaintDC 构造函数为您调用 BeginPaint,析构函数则调用 EndPaint。该简化过程将创建 CDC 对象、

2、绘制和销毁 CDC 对象。在框架中,甚至连这个过程的大部分也是自动的。具体说来,框架给 OnDraw 函数传递(通过 OnPrepareDC)准备好的 CPaintDC,您只需绘制到 CPaintDC 中。根据调用 OnDraw 函数的返回,CPaintDC 被框架销毁并且将基础设备上下文释放给 Windows。 CClientDC 对象封装对一个只表示窗口工作区的设备上下文的处理。CClientDC 构造函数调用 GetDC 函数,析构函数调用 ReleaseDC 函数。CWindowDC 对象封装表示整个窗口(包括其框架)的设备上下文。 CMetaFileDC 对象将绘制封装到 Windo

3、ws 图元文件中。与传递给 OnDraw 的 CPaintDC 相反,在这种情况下您必须自己调用 OnPrepareDC。 设备上下文(Device Context)DC DC实际上是GDI内部保存的数据结构。 DC与特定的显示设备(如显示器或打印机)相关。 对于显示器,DC总是与显示器上的特定视窗相关。 DC中的有些值是图形属性,这些属性定义了GDI绘图函数工作的细节。 例如,对於TextOut,DC的属性确定了文字的颜色、文字的背景色、x座标和y座标映射到视窗的显示区域的方式,以及显示文字时Windows使用的字体。 MSDN的解释: 一个DC是一个结构,它定义了一系列图形对象的集合以及它

4、们相关的属性,以及影响输出效果的一些图形模式。这些图形对象包括一个画线的笔,一个填充和 painting的画刷,一个用来向屏幕拷贝的位图,一个定义了一系列颜色集合的调色板,一个用来剪裁等操作的区域,一个做painting和 drawing操作的路径。SDK(Software Development Kit, 即软件开发工具包 )一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。基本信息SDK,Software Development Kit 的缩写,中文即“软件开发工具包”。广义上指辅助开发某一类软件的相关文档、范例和工具的集合。 SDK是一

5、些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发 Windows 平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口 API 的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。 为了鼓励开发者使用其系统或者语言,许多 SDK 是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。例如,营销公司会免费提供构件

6、SDK 以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。 SDK 可能附带了使其不能在不兼容的许可证下开发软件的许可证。例如产品供应商提供一个专有的SDK可能与自由软件开发抵触。GPL能使SDK与专有软件开发近乎不兼容。LGPL下的SDK则没有这个问题。API API(Application Programming Interface)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。其实早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DO

7、S 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将 AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在 Windows 中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。 可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。 DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API

8、呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念DLL。DLL DLL,即 Dynamic Link Library(动态链接库)。在windows环境下含有大量 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数, 必须要有 API

9、 函数的声明(.H)和其导入库(.LIB),导入库可以先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。 为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SD

10、K 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API(应用程序编程接口)API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。Windows APIWindo

11、ws API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么。 这在某种程度上很象Windows的天然代码。其他的语言只是提供一种能自动而且更容易的访问 API的方法。VB在这方面做了很多工作。它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法, 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows,同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体,VB获取这个调用并经过分析后生成一个特定事件。 API函数包含在W

12、indows系统目录下的动态连接库文件中。 更易理解地说:Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理系统资源之外,她同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个 函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序, 所以便称之为Application Programming Interface,简称API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。 凡是在 Windows 工作环境底下执行的应用程式,都可以调用Windows API。CDC

13、是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就相当于B

14、asic语言.HDC是WINDOWS的一种数据类型,是设备描述句柄。 而CDC是MFC里的一个类,它封装了几乎所有的关于 HDC的操作。 也可以这样说,HDC定义的变量指向一块内存,这块 内存用来描述一个设备的相关的内容,所以也可以 认为HDC定义的是一个指针;而CDC类定义一个对象, 这个对象拥有HDC定义的一个设备描述表,同时也包 含与HDC相关的操作的函数。 这与HPEN和CPen,POINT与CPoint之间的差别是一样 的。CDC类(程序设计)中文介绍CDC类定义的是设备上下文对象的类。 CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成

15、员。 通过CDC对象的成员函数进行所有的绘图。 类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。 它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆和多边形等形状提供了成员函数。 另外还为绘制文本、处理字体,使用打印机跳转,滚动和播放元文件提供成员函数。 使用CDC对象时要构造它,然后调用与它平等的、使用设备上下文的Windows函数的成员函数。 注意: Windows 95下所有屏幕坐标限制在16位以内。因此向CDC成员函数传递的int必须在-32768至32767之间。 Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类-CDC类CClientDC类CClientDC派生于CDC,在构造时调用了Windows函数GetDC,在析构时调用了ReleaseDC。这意味着和CClientDC对象相关的设备上下文是窗口的客户区。几种DC及区别CClientDC:(客户区设备上下文)用于客户区的输出,与特定窗口关

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号